簡體   English   中英

什么是.next(); 在這種情況下怎么辦?

[英]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.

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