首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >整型java的键盘输入

整型java的键盘输入
EN

Stack Overflow用户
提问于 2018-10-28 02:02:58
回答 2查看 749关注 0票数 -1

我试图将键盘输入转换为整数,但我的程序总是崩溃。当输入诸如"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) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-28 02:09:15

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

Stack Overflow用户

发布于 2018-10-28 02:33:27

当您提供字符作为输入时,while循环条件为真,因此它进入while循环并扫描字符和打印值,但当您提供整数时,while循环条件变为false,它不会进入while循环。在while循环之外,您正在解析整数,您不需要这样做,因为您将integer作为输入。您需要做的是,在integer.parseInt( input.all )的位置,您必须扫描整数,即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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53024808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档