gpt4 book ai didi

java - 为什么我的java代码会进入无限循环?

转载 作者:行者123 更新时间:2023-12-02 03:27:53 24 4
gpt4 key购买 nike

我下面的代码似乎进入了无限循环,我很困惑为什么。我引入了一些代码,直到触发错误消息:

import java.util.Scanner;

public class Average
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int count = 0;
double sum = 0;
System.out.print("Enter a value: ");
boolean notDone = true;
while (notDone)//go into loop automatically
{
if(!in.hasNextDouble()){
if(count==0){//this part generates bugs
System.out.print("Error: No input");
}else{
notDone = false;
}

}else{
sum+= in.nextDouble();
count++;
System.out.print("Enter a value, Q to quit: ");
}
}
double average = sum / count;
System.out.printf("Average: %.2f\n", average);
return;
}
}

正如评论中所指出的,罪魁祸首是这些行:

                if(count==0){ //this part generates bugs
System.out.print("Error: No input");
}

这个if case的目的是让用户停留在循环中,并提醒用户需要有效输入,直到收到有效输入,但并不是没有办法跳出循环,因为用户可以在程序接收到有效输入(至少一个 double 值,后跟一个非 double 值)的条件下跳出循环。

干杯。

最佳答案

您的代码会进入无限循环,因为在没有检测到 double 的情况下,条件不会取得任何进展。发生这种情况时,您会打印一条消息,但不会从扫描仪中删除垃圾输入。

in.nextLine() 添加到条件将解决此问题:

if(!in.hasNextDouble()){
if (!in.hasNextLine()) {
// The input is closed - exit the program.
System.out.print("Input is closed. Exiting.");
return;
}
in.nextLine();
... // The rest of your code
} ...

关于java - 为什么我的java代码会进入无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38548014/

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