Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单Java扫描程序代码不工作_Java_Loops_Java.util.scanner - Fatal编程技术网

简单Java扫描程序代码不工作

简单Java扫描程序代码不工作,java,loops,java.util.scanner,Java,Loops,Java.util.scanner,下面是我为制作一个简单游戏而编写的一些基本代码的框架: Scanner in = new Scanner(System.in); String name; String playing; int age; do { System.out.println("Enter your name"); name = in.nextLine(); System.out.println("Enter your ag

下面是我为制作一个简单游戏而编写的一些基本代码的框架:

    Scanner in = new Scanner(System.in);

    String name;
    String playing;
    int age;

    do {

        System.out.println("Enter your name");
        name = in.nextLine();

        System.out.println("Enter your age");
        age = in.nextInt();

        System.out.println("Play again?");
        playing = in.nextLine();

    } while (true);
代码未按预期工作,例如,以下是代码的预期功能:

Enter your name
John
Enter your age
20
Play again?
Yes
Enter your name
Bill
...
但是,再次读取播放行存在问题,这是实际输出:

Enter your name
John
Enter your age
20
Play again?
Enter your name
如您所见,“输入您的姓名”在“再次播放”能够接受输入之前再次显示。调试时,playing变量被设置为“”,因此我看不到任何输入,也无法确定正在使用什么。 任何帮助都将不胜感激,谢谢

在Scanner类中使用next()方法,而不是nextLine()方法

有关更多信息,请参阅 输出:

nextInt()


在读取
int
后添加另一个
nextLine()
,或者完全放弃它的值,或者检查它是否为空,如果您想阻止人们输入int以外的任何内容。

问题是,调用nextLine()后,缓冲区中仍然有一个“\n”,因此这就是传递的内容。在.next()中使用,而不是在.nextLine()中使用。

下一行读取时应使用以下代码

Scanner scanner = new Scanner(System.in).useDelimiter("\n");
读这行你应该写

scanner.next();

为什么会这样,使用nextLine()有什么问题?如果有人输入
Kanishka Dilshan
作为他们的名字会发生什么?谢谢你的帮助,这很有意义。使用
next
是个坏主意。如果有人输入
abc
作为姓名,会发生什么?
Scanner scanner = new Scanner(System.in).useDelimiter("\n");
scanner.next();