java - 我可以在 catch 语句中使用 Scanner

标签 java try-catch

<分区>

如果我为第一个 Scanner 语句输入字母,我会收到“错误!!”和“输入一个数字”但不能输入另一个数字。我是初学者,不知道输入语句是否可以在catch语句中使用

 import java.util.InputMismatchException;
 import java.util.Scanner;
 public class excep {
 public static void main(String args[]){
     int n;
     Scanner input=new Scanner(System.in);
     try{
         System.out.println("ENTER A NUMBER: ");
          n=input.nextInt();
     }
     catch(InputMismatchException e){
         System.out.println("ERROR!!! \nENTER A NUMBER :");
         n=input.nextInt();
     }
 }
 }

最佳答案

在重新开始输入之前,您必须从缓冲区中吃掉或删除字符。为了简单起见,您的代码应该看起来相似:

while(true) {
  Scanner input=new Scanner(System.in);
  try {
     System.out.println("ENTER A NUMBER: ");
     n=input.nextInt();
     break;
 }catch(InputMismatchException e) {
   System.out.println("ERROR!!! \nENTER A NUMBER :");
   input.next(); // eat some chars
 }
}

关于java - 我可以在 catch 语句中使用 Scanner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29530841/

相关文章:

java - 编译错误 - com.mysql.jdbc.Driver 无法解析为变量

Java图形,使窗口闪烁不同的颜色

android - Android Studio。线程休眠后应用崩溃

java - 正在捕获 Java Throwable 重新启动线程的最佳方法

exception-handling - try catch 和 finally 的返回值

java - try-catch 场景 - 是否正确使用 checked 或 not

java - 在 JFrame 中添加图像时出现错误输出

java - 如果事件是从另一个监听器发布的,则忽略 TransactionalEventListener

java - 查找数字的所有排列的算法

azure - Invoke-AzVMRunCommand - 错误处理的最佳实践?