package com.imooc.collection;
import java.util.Scanner;
public class Test {
private static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
while(true){
System.out.println("输入一个数字");
test();
}
}
private static void test(){
try{
int command;
command = input.nextInt();
System.out.println(command);
}catch(Exception e){
System.out.println("输入有误");
// input = new Scanner(System.in);
}
}
}
上面的这些是我的代码,
这时候如果输入非数字就会无限报错
但是如果把catch中注释的内容加上就不会无限报错
请问在这里重新定义input是什么意思?
------解决思路----------------------
抱歉看错了,
input.nextInt()报错的时候,你输入的值其实还在 input里面,没有被取出来,所以无限循环的时候command看到input里面有值,不需要输入 再去取值但是还是报错,值还在里面。所以会死循环下去。把代码改成这样你就明白了
catch(Exception e){
String command;
command = input.next();
System.out.println(command);
// input = new Scanner(System.in);
}