有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVAutil。整数java的扫描器键盘输入

我试图将键盘输入转换为整数,但我的程序一直崩溃。 当输入诸如“k”之类的a字符时,它会工作,但当我输入“5”时,它会崩溃。 你知道我做错了什么吗

// Getting an integer value.
public static int getInt() {
    int numberEntered = 0;
    String entry = "";
    Scanner keyboard = new Scanner(System.in);
    while (!keyboard.hasNextInt()) {
        entry = keyboard.next();
        System.out.println("That is not an integer.  " + "Please try again.");
    }
    numberEntered = Integer.parseInt(entry);
    System.out.print(numberEntered);
    return numberEntered;
}

输出:

Error given: k That is not an integer. 
Please try again. 
8 
Exception in thread "main" java.lang.NumberFormatException: For input string: "k" at 
  java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
    at java.base/java.lang.Integer.parseInt(Integer.java:652) 
    at java.base/java.lang.Integer.parseInt(Integer.java:770) 
    at Program2.getInt(Program2.java:56) 
    at Program2.problemSelectionMenu(Program2.java:40) 
    at Program2.main(Program2.java:14) 

共 (1) 个答案

  1. # 1 楼答案

    当您将字符作为输入时,while循环条件为true,因此它进入while循环并扫描字符和字符的打印值,但当您给出整数时,while循环条件变为false,而不进入while循环。在while循环之外,您正在解析整数,您不需要这样做,因为您将整数作为输入。你所要做的就是在 整数parseInt(entry),必须扫描整数,即。 inti=键盘。nextInt(); 因为在while循环条件下,您只需要检查输入是否为整数。但如果是整数,则没有扫描输入

    试试这个

    int numberEntered = 0;
        String entry = "";
        Scanner keyboard = new Scanner(System.in);
    
        while (!keyboard.hasNextInt()) {
             entry = keyboard.next();
    
            System.out.println("That is not an integer.  " +"Please try again.");
        }
        numberEntered = keyboard.nextInt();
        System.out.print(numberEntered);