[英]What does .next(); do in this case?
這是需要 integer 輸入的代碼。 如果輸入是 integer,則循環結束,否則再次詢問輸入。 但如果我不包括 sc.next(); 當給出非 integer 值時,它將 go 進入無限循環。 這里主要是function:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean status = false;
while (!status) {
status = sc.hasNextInt();
if (status){
System.out.println("Number of people recorded");
} else {
System.out.println("Enter a valid integer number.");
}
sc.next();
}
}
您不需要將status
作為單獨的變量。 您只需要在等待int
時使用不是int
的令牌。 喜歡,
Scanner sc = new Scanner(System.in);
while (true) {
if (sc.hasNextInt()) {
System.out.println("Number of people recorded " + sc.nextInt());
break; // <-- end the loop
} else {
System.out.println("Enter a valid integer number.");
sc.next(); // <-- it's not an int, but consume whatever it is
}
}
sc.hasNextInt()
告訴您輸入是否為 integer。 如果是,則循環退出。 如果不是,則循環繼續。 由於sc.hasNextInt()
為假,它會無限繼續,因為您從未讀過輸入的實際內容。 包含sc.next()
實際上會獲得輸入,暫停,因此不會無限地繼續循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.