我是Java新品牌,這是一個投擲我。使用下面的代碼,它會循環處理第一個問題,直到我輸入除整數之外的任何內容,但在完成該循環後,它不會停止解決剩下的問題。「hasNextInt」不檢測後續輸入;在哪裏放「nextLine」?
通過一些研究和閱讀,我發現我需要使用in.nextLine()在輸入後吃掉換行符。但是,無論我在哪裏放置nextLine()都不起作用?我認爲這將是第一個int input = in.nextInt();線,但沒有奏效。任何幫助將在哪裏去,爲什麼?
System.out.print("How many CUs per course are remaining in your degree program? Enter any letter to quit: ");
while (in.hasNextInt()) { // Verify input is an integer
int input = in.nextInt();
if (input <= 0) // Verify that input is not negative or zero
{
System.out.println("Please enter a positive number or any letter to quit");
System.out.print("Add another course or any letter to quit: ");
} else {
courseCuList.add(input);
System.out.print("Add another course or any letter to quit: ");
}
}
System.out.print("How many CUs do you plan to take per term?");
while (in.hasNextInt()) {
int input = in.nextInt();
// in.nextLine(); This line consumes the \n
if (input <= 0) {
System.out.println("Please enter a whole positive number.");
System.out.println("How many CUs do you plan to take per term?");
} else {
cuPerTerm = in.nextInt();
}
}
我只會使用'nextLine'和'Integer.parseInt'。在輸入不同的輸入之後,這比試圖消耗面向行的流「正確的方式來修復下一個掃描器讀取」要容易得多。 – user2864740 2014-08-31 22:44:25
基本上,每次你編碼nextInt(),你必須跟着nextLine()去消耗換行符(假設你每行輸入一個數字) – Bohemian 2014-08-31 23:02:12
使用nextLine和Integer.parseInt將取代in.hasNextInt ()正確嗎?波希米亞,在這種情況下,nextLine()會跟在第一個int input = in.nextInt()右邊?我已經試過,他們每個人和他們兩人,它仍然通過第二個輸入。我已經閱讀了很多有關這個問題的問題,但似乎沒有一個適用於我的情況。我很欣賞這些快速反應。 – 2014-08-31 23:06:51