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