我第一次提的问题不够清晰,我编辑了一下:
nextInt 是 输入整数的用法,你输入字符串,也就是会抛出 输入不匹配的报错,因为你捕获了异常,且打印了”请重新输入“; 这时进入循环,判断hasNext,又等待nextInt 输入,因为输入流里还是之前输入的字符串,nextInt还是 会抛出 输入不匹配的报错。最终导致死循环。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
try {
int i = scanner.nextInt();
System.out.println(i);
break;
} catch (Exception e) {
e.printStackTrace();
System.out.println("请重新输入");
scanner.nextLine();
}
}
}
}
该回答引用自ChatGPT
scanner.hasNext() 方法是 java.util.Scanner 类中的方法,它用于判断输入流中是否还有下一个标记(token)。如果输入流中还有标记,则返回 true,否则返回 false。
在使用 Scanner 对象进行输入时,我们通常会采用循环的方式读取输入,例如:
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
String input = scanner.next();
// 处理输入
}
在这个例子中,scanner.hasNext() 方法用于判断输入流中是否还有下一个标记,如果有,则继续循环读取输入并处理;如果没有,则退出循环。这样可以保证程序不会因为输入不足而陷入死循环或抛出异常。