扫描仪没有扫描所有字段?

时间:2013-07-03 05:03:58

标签: java

如果算上你好的世界,程序并遇到一个小问题,那我就写第一篇,第二名。

我的代码:

import java.util.*;

class test {
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    System.out.print("What is your name: ");
    String name = scan.nextLine();

    System.out.print("What is your favorite number: ");
    int favoriteNumber = scan.nextInt();

    System.out.print("What is your favorite game: ");
    String game = scan.nextLine();
}
}

因此它会在name和favoriteNumber中进行扫描,但程序会在要求用户输入喜爱的游戏之前结束。基本上,用户只能输入文本两次而不是我想要的三次。

2 个答案:

答案 0 :(得分:1)

只是猜测:scan.nextInt()在用户按Enter后不会使用尾随换行符。随后对scan.nextLine()的调用会找到换行字符。

尝试为int favoriteNumber = scan.nextInt();切换String favoriteNumber = scan.nextLine();,看看是否能解决问题。如果确实如此,我的假设是正确的。

如果 ,则应该使用Integer.parseInt将此字符串转换为整数。这里的问题实际上是你真的想要收集3行输入,其中一行定义为“以换行符结尾的任何字符序列”。你的程序目前被编写为请求一行,一行,然后是一行,而不是“3行输入,其中一行包含一个int”。

答案 1 :(得分:0)

必须抛出异常scan.nextInt(); 检查您是否输入了正确的int