键盘输入到整数java

我试图将键盘输入转换为整数,但我的程序不断崩溃。当输入诸如“k”之类的字符时它起作用,但当我输入“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. 

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) 


温温酱
浏览 199回答 2
2回答

暮色呼如

您检查以确保输入具有下一个 int,但是一旦Scanner具有下一个 int,您就永远不会将 int 解析为entry,因此它仍然是错误的输入。您需要将int用户输入的分配给entry。您只需调用即可轻松完成此操作nextInt():while (!keyboard.hasNextInt()) {    entry = keyboard.next();    System.out.println("That is not an integer.  " + "Please try again.");}numberEntered = keyboard.nextInt();System.out.print(numberEntered);return numberEntered;

烙印99

当您将字符作为输入提供时,while 循环条件为真,因此它进入 while 循环并扫描字符和打印字符的值,但是当您提供整数时,while 循环条件变为假并且不会进入 while 循环. 在 while 循环之外,您正在解析整数,您不需要这样做,因为您将整数作为输入。您所要做的就是在 integer.parseInt(entry) 的位置,您必须扫描整数即 int i =keyboard.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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java