我發現,可以使用下面的代碼複製一個嚴重的問題:如何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這不是從這個問題重複,我只是沒有一個更好的標題使用 –