在死循环中使用Scanner获得键盘输入

博客给出了Java代码在不同情况的示例,包括编译时无错误和警告且运行无异常、编译时报错、编译时警告、编译时无错误和警告但运行中出现异常的代码,通过这些示例可了解Java代码在编译和运行阶段可能出现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 编译时无错误和警告,且运行过程中无异常的代码示例 
//编译时无错误和警告,且运行过程中无异常的代码示例
package scanner_test;

import java.util.*;

public class Test {
Scanner s = new Scanner(System.in);
/*Scanner的实例作为类的成员,只生成一次,死循环中调用其方法,结束时应该会
自动调用其close()方法*/
public void test() {
while(true) {
try {
System.out.println("str:"+s.nextLine());
}catch(Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Test t = new Test();
t.test();
}
}
2. 编译时报错的示例代码 
//编译时报错
package scanner_test;

import java.util.*;

public class Test2 {
public void test() {
Scanner s = new Scanner(System.in);
while(true) {
try {
System.out.println("str:"+s.nextLine());
}catch(Exception e) {
e.printStackTrace();
}
}
s.close();//编译器提示的 错误:Unreachable code
}
public static void main(String[] args) {
Test2 t = new Test2();
t.test();
}
}
3. 编译时警告的代码示例
//编译时警告
package scanner_test;

import java.util.*;

public class Test3 {
public void test() {
Scanner s = new Scanner(System.in);
//编译器提示的警告:Resource leak: 's' is never closed
while(true) {
try {
System.out.println("str:"+s.nextLine());
}catch(Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Test3 t = new Test3();
t.test();
}
}
4. 编译时无错误和警告,运行过程中出现异常的示例代码 
//编译时无错误和警告,运行过程中出现异常
package scanner_test;

import java.util.*;

public class Test4 {
public void test() {
while(true) {
Scanner s = new Scanner(System.in);
try {
System.out.println("str:"+s.nextLine());
}catch(Exception e) {
e.printStackTrace();
}
s.close();
}
}
public static void main(String[] args) {
Test4 t = new Test4();
t.test();
}
}
异常如下:


--------------------- 

转载于:https://www.cnblogs.com/hyhy904/p/10947642.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值