为了账号安全,请及时绑定邮箱和手机立即绑定

键盘输入到整数java

键盘输入到整数java

温温酱 2021-12-10 16:37:15
我试图将键盘输入转换为整数,但我的程序不断崩溃。当输入诸如“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. 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) 
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

您检查以确保输入具有下一个 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;


查看完整回答
反对 回复 2021-12-10
?
烙印99

TA贡献1829条经验 获得超13个赞

当您将字符作为输入提供时,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);


查看完整回答
反对 回复 2021-12-10
  • 2 回答
  • 0 关注
  • 198 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号