gpt4 book ai didi

java - 第二个 while 循环无限运行有人可以解释为什么吗?

转载 作者:行者123 更新时间:2023-12-02 02:29:32 25 4
gpt4 key购买 nike

我正在尝试掌握多个输入,但遇到了一个我似乎无法理解的问题。

我尝试过调试,并且了解逻辑错误发生在哪里,但我似乎无法理解原因。

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>

这就是正在发生的事情,而且还在继续。这是一个无限循环。

第一行是测试用例的数量,因此在给定的情况下第二个循环应该运行两次,但它会无限运行

最佳答案

我真的不明白你想用两个 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

关于java - 第二个 while 循环无限运行有人可以解释为什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57239434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com