测试输入是否为整数

时间:2019-06-20 14:08:28

标签: java input

我试图只允许输入整数,并在输入其他内容时阻止程序中断。我的代码以某种方式创建了一个无限循环,并且不允许我输入新的输入。

    private static int x;

    public static void main(String[] args) {
        testInput();
    }

    public static void testInput(){
        while (true){
            System.out.println("Please enter Integer:");
            try{
                setX(scanner.nextInt());
                break;
            }catch (InputMismatchException i){
                System.out.println("Please use Integer");
            }
        }
    }

    public static void setX(int integer){
        x = integer;
    }
}

创建一个无限循环,该循环显示:请输入Integer:,请使用Integer而不是让我输入新内容。

1 个答案:

答案 0 :(得分:2)

通过while循环,您处在正确的轨道上,基本上,您只需要在用户输入非整数的内容时使用scanner.next()

import java.util.Scanner;

class Main {

  public static void main(String[] args) {
    int userInteger = getIntegerInput();
    System.out.println("You entered: " + userInteger);
  }

  private static int getIntegerInput() {
    Scanner scanner = new Scanner(System.in);
    String prompt = "Please enter an integer: ";
    int validInteger = -1;

    System.out.print(prompt);
    while (scanner.hasNext()) {
      if (scanner.hasNextInt()) {
        validInteger = scanner.nextInt();
        scanner.close();
        break;
      } else {
        System.out.println("Error: Invalid input");
        System.out.print(prompt);
        scanner.next();
      }
    }

    return validInteger;
  }

}

用法示例:

Please enter an integer: a
Error: Invalid input
Please enter an integer: ?
Error: Invalid input
Please enter an integer: 1.0
Error: Invalid input.
Please enter an integer: 6
You entered: 6