若编写以下程序,一旦输入错误,将不断提示输入错误而不允许我们重新输入字符:
import java.util.Scanner;
public class Main {
public static final Scanner s=new Scanner(System.in);
public static void main(String[] args) {
while(true){
int n;
try{
n=s.nextInt();
break;
}catch(Exception e){
System.out.println("输入错误!请重新输入:");
}
}
System.out.println("你输入了整数");
}
}
原因是:
Scanner这个扫描器会一直停在内存中的错误字符区域,不往前进。
解决方法:
加入一句:
s.next();
import java.util.Scanner;
public class Main {
public static final Scanner s=new Scanner(System.in);
public static void main(String[] args) {
while(true){
int n;
try{
n=s.nextInt();
break;
}catch(Exception e){
System.out.println("输入错误!请重新输入:");
s.next();
}
}
System.out.println("你输入了整数");
}
}
之后程序就正常了。
Scanner 类不允许被继承。