我发现,可以使用下面的代码复制一个严重的问题:如何Scanner.next()与用户输入交互
Scanner scanner = new Scanner(System.in);
System.out.println("First entry:");
System.out.println("->" + scanner.next());
System.out.println("Second entry:");
System.out.println("->" + scanner.nextLine());
如果用户条目是“一”,调用nextLine()
将捕获一个空字符串。我发现为什么这发生在其他帖子[1],[2]。 next()
调用只留下行末尾的'\ n'字符。
我不为已了解为什么下面的代码工作:
System.out.println("First entry:");
System.out.println("->" + scanner.next());
System.out.println("Second entry:");
System.out.println("->" + new Scanner(System.in).nextLine());
例子:
对于输入 “一个Hello World” 的第一个块获得 “A”在下一个()调用和nextLine()调用中的“Hello World”。
但在代码的第二块得到的“一”中的next()调用,但在nextLine“抛弃”了的“Hello World”()调用,并等待用户PROMT再次
*我知道为什么在第一个代码块中nextLine()调用会得到一个空字符串
''新的扫描仪(System.in)''创建一个从头开始解析的新对象。 – mmuzahid
第一个Scanner实例“锁定”最后一行或类似的东西?它从一开始就解析什么? –
@NayukiMinase这不是从这个问题重复,我只是没有一个更好的标题使用 –