簡體   English   中英

關於java Scanner的一些問題

[英]some questions about java Scanner

在此處輸入圖片說明}

為什么第6行的代碼和第8行的效果一樣? 這個while循環的起點沒有區別嗎?

此外,您應該按照以下提示正確使用Scanner

將任何nextXXX方法與來自Scanner類的nextLine混合用於用戶輸入,不會再次要求您輸入,而是導致nextLine讀取空行。

為了防止這種情況,在讀取用戶輸入時,始終只使用nextLine 如果您需要int ,請執行int value = Integer.parseInt(scanner.nextLine());

而不是使用nextInt

假設如下:

Scanner sc = new Scanner(System.in);

System.out.println("Enter your age:");
int age = sc.nextInt();
System.out.println("Enter your name:");
String name = sc.nextLine();

System.out.println("Hello " + name + ", you are " + age + " years old");

執行此代碼時,系統會要求您輸入年齡,假設您輸入20 但是,代碼不會要求您實際輸入名稱,輸出將是:

Hello , you are 20 years old.

原因是當你按下回車鍵時,你的實際輸入是

20\n

而不僅僅是20 nextInt的調用現在將消耗20並將換行符\\n留在System.in的內部輸入緩沖區中。 nextLine的調用現在不會導致新的輸入,因為System.in仍有未讀的輸入。 所以它會讀取\\n ,導致一個空的輸入。

因此,每個用戶輸入不僅是一個數字,而且是整行 因此,即使只閱讀一個年齡,也使用nextLine()更有意義。 按預期工作的更正代碼是:

Scanner sc = new Scanner(System.in);

System.out.println("Enter your age:");
// Now nextLine, not nextInt anymore
int age = Integer.parseInt(sc.nextLine());
System.out.println("Enter your name:");
String name = sc.nextLine();

System.out.println("Hello " + name + ", you are " + age + " years old");

nextXXX方法(例如nextInt在從單行讀取多輸入時很有用。 例如,當您在一行中輸入20 John時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM