【问题标题】:Display an Error for invalid input in JAVA在 JAVA 中显示无效输入错误
【发布时间】:2021-09-18 04:15:22
【问题描述】:

我编写了一个 JAVA 程序,它接受用户的输入并检查用户是否输入了正确的内容。我已经从 Scanner 类中获取了输入。如果用户输入了无效字符,如字符串,我想显示“无效输入”。

public class Main {
    public static void main(String[] args) {
        Scanner takeInteger = new Scanner(System.in);
        System.out.println("Enter a number");
        int enteredNumber = takeInteger.nextInt();
    }
}

【问题讨论】:

  • 什么是有效输入?到现在为止你尝试了什么?
  • 一个有效的输入是一个整数。

标签: java input integer


【解决方案1】:

您也可以使用异常处理。

public class Main {
     public static void main(String[] args) {
         Scanner takeInteger = new Scanner(System.in);
         System.out.println("Enter a number");
         try {
             int enteredNumber = takeInteger.nextInt();
         }
         catch (Exception e) {
             System.out.println("Invalid Input");
         }
     }
}

【讨论】:

  • 当我实现以下代码时,它可以工作。但是假设我想打印出数字的加法。当我输入一个输入(第二个数字)并使用 System.out.println 打印它时,对于 'enteredNumber',它说'无法解析符号'enteredNumber''
  • @Hardik 看来您正在接受另一个输入或在“尝试”块之外执行添加。仅在您接受第一个输入后,尝试在“try”块内执行此操作。
【解决方案2】:

只需询问Scanner 下一个输入是否为有效的 int 值,例如

Scanner takeInteger = new Scanner(System.in);
System.out.println("Enter a number");
while(!takeInteger.hasNextInt()) {
    System.out.println("Invalid Input: " + takeInteger.next());
}
int enteredNumber = takeInteger.nextInt();

这将重试该操作,直到用户输入一个数字。如果您只想尝试一次,请使用类似

Scanner takeInteger = new Scanner(System.in);
System.out.println("Enter a number");
if(!takeInteger.hasNextInt()) {
    System.out.println("Invalid Input: " + takeInteger.next());
}
else {
    int enteredNumber = takeInteger.nextInt();
    // ... proceed with the input
}

【讨论】:

    【解决方案3】:

    当传递无效输入时,您将得到InputMismatchException 的异常。(即整数值除外),您可以使用try-catch 块来保存异常并通知用户有关无效输入的信息。@987654321 @, Catch block

        import java.util.*; 
    
        Scanner takeInteger = new Scanner(System.in);
        System.out.println("Enter a number");
        try{
           int enteredNumber = takeInteger.nextInt();
        }
        catch(InputMismatchException e) {
            System.out.println("Enter a valid input");
        }
    

    【讨论】:

    • 它说无法解析符号'InputMismatchException'
    • @Hardik 我以为您可能已经使用通配符 import java.util.* 导入了包 java.util ,但看起来您只导入了可以使用此类的 Scanner 类-> import java.util.InputMismatchException;
    【解决方案4】:

    需要调用Scanner类的.nextLine方法,然后解析成想要的类型。

    例子:

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("Enter a number");
            String line = sc.nextLine();
    
            try {
                int enteredNumber = Integer.parseInt(line);
                System.out.println("You have entered: " + enteredNumber);
            } catch (Exception e) {
                System.out.println("Invalid Input");
            }
        }
    }
    

    带有数字的结果:

    Enter a number
    12
    You have entered: 12
    

    结果一个文本:

    Enter a number
    abcd
    Invalid Input
    

    【讨论】:

      【解决方案5】:

      您可以在程序中添加try-catch 块来检查用户输入的是否是数字。

              Scanner takeInteger = new Scanner(System.in);
              System.out.println("Enter a number");
              String input = takeInteger.next();
              int enteredNumber;
              try
              {
                  enteredNumber = Integer.parseInt(input); // Input is a number
              }
              catch(NumberFormatException ex)
              {
                  System.out.println("Wrong Input!"); // Invalid input
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-03
        • 1970-01-01
        • 2020-02-04
        • 2018-09-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多