让用户在扫描器中只输入整数 Java

Make user only input integer in scanner Java

我这里有一些问题。 我希望用户只能输入整数。我尝试了很多代码,但仍然无法正常工作。顺便说一句,这是我的代码

import java.util.Scanner;

public class test { 
  public static void main (String []args){
    Scanner scan = new Scanner(System.in);
    int number = scan.nextInt();
  }
}

出错时,消息显示为

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at test.main(test.java:6)

请帮助我(初级程序员);

试试这个:

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.print("Enter a number -> ");
            String input = sc.next();
            int intInputValue = 0;
            try {
                intInputValue = Integer.parseInt(input);
                break;
            } catch (NumberFormatException ne) {
                System.out.println("This is not a number");
            }
        }
    }

当用户输入一个整数输入值时,该程序将结束。

输出

  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    while (!scan.hasNextInt()) {
      System.out.println("Input is not a number.");
      scan.nextLine();
    }
    int number = scan.nextInt();
  }

此代码将检查输入是否为整数,如果是则继续。

只有当用户没有输入 integer.For 这种情况时才会出现这种错误,您可以创建一个 try-catch 块来捕获异常,如下所示:

String input = sc.next();
int number = 0;
try {
   number = Integer.valueOf(input);
} catch (NumberFormatException ne) {
   System.out.println("Invalid input!");
}

为了进一步优化解决方案,将这一切放在一个循环中,并在 try-block 中跳出,如果用户输入了错误的数字,则继续轮询输入。