[英]some questions about java Scanner
此外,您應該按照以下提示正確使用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.