简单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();