簡體   English   中英

第二個while循環不斷運行,有人可以解釋為什么嗎?

[英]The second while loop is running endlessly can someone please explain why?

我試圖將多個輸入掛起,但遇到了我似乎無法理解的問題。

我嘗試了調試,並且我了解了發生邏輯錯誤的地方,但是我似乎無法理解為什么。

import java.util.Scanner;
public class Main
{

    public static void main(String args[])
    {
        int i=0;
        Scanner sc=new Scanner(System.in);
        int T=sc.nextInt();
        sc.nextLine();
        while(T!=0)
        {
            System.out.println("First Loop");
           while(sc.hasNext()) {
               System.out.println("Second loop");
               int j=sc.nextInt();
               i=i+j;
           }
           sc.nextLine();
           T=T-1;
        }
        System.out.println("end");
    }
}


2<br>
First Loop<br>
1 2 3 4 5<br>
Second loop<br>
Second loop<br>
Second loop<br>
Second loop<br>
Second loop<br>
1 2 3 4 5<br>
Second loop<br>
Second loop<br>
Second loop<br>
Second loop<br>
Second loop<br>
1 2 3 4 5<br>
Second loop<br>
Second loop<br>
Second loop<br>
Second loop<br>
Second loop<br>

這是正在發生的事情,並且持續不斷。 它是一個無盡的循環。

第一行是測試用例的數量,因此第二個循環在給定的情況下應該運行兩次,但是循環不斷

我真的不明白您在嘗試使用2個while循環在這里做什么,但是您可以通過簡單地解決無限循環問題

while(sc.hasNextInt()) { //change here
    System.out.println("Second loop");
    int j=sc.nextInt();
    i=i+j;
}

基本上, hasNext()將始終返回true但是,只有將整數賦予hasNextInt()返回true。 因此,您可以通過輸入非整數輸入退出循環。

讀取文件時,到達文件末尾時, hasNext()最終將返回false 但是,當您閱讀鍵盤輸入時,顯然不會返回false

暫無
暫無

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

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