gpt4 book ai didi

java - 为什么我的代码必须输入两个输入才能开始运行?

转载 作者:行者123 更新时间:2023-12-02 01:17:37 24 4
gpt4 key购买 nike

我在代码中使用 while 语句,用户在 while 语句内输入一个数字。要停止程序循环,用户必须输入“停止”一词。但是,一旦我输入一个数字,输出就会跳到另一行,而不打印我希望它打印的语句,并且我必须再次输入所需的输入以使程序开始循环。 唯一不会发生此问题的情况是当用户首先输入“stop”时,代码就可以正常工作。

这是为了找到任意数量的用户输入数字的最大值、最小值和平均值。我尝试更改 else/if 语句的顺序以及所述 else/if 语句的参数,但似乎没有任何效果。

    boolean stopped = false;

int numberAmount = 0;
int invalidAmount = 0;

double max = Integer.MIN_VALUE;
double min = Integer.MAX_VALUE;
double mean = 0;

while(stopped == false)
{
System.out.print("Enter a number (type "+"\""+"stop"+"\""+" to stop): ");
String originalInput = userInput.nextLine();

if(originalInput.equals("stop"))
{
stopped = true;
invalidAmount ++;
System.out.println(numberAmount+" numbers were entered with "+invalidAmount+" invalid inputs.");
}

else if(userInput.hasNextDouble())
{
double currentValue = Double.parseDouble(originalInput);
max = Math.max(max, currentValue);
min = Math.min(min, currentValue);
mean = currentValue;
numberAmount ++;
}

else if(originalInput.equals("stop") == false)
{
System.out.println("Not a number...");
invalidAmount ++;
}
}


System.out.println("The maximum is "+max+".");
System.out.println("The minimum is "+min+".");
System.out.println("The mean is "+(mean / numberAmount)+".");

userInput.close();

}

}

例如,我期望输入7后的输出为“输入数字(输入“stop”停止):”在下一行(因为程序循环不断提示输入数字),然后用户可以继续输入他们喜欢的数字。 相反,实际输出是原始提示用户输入下的一个空行,用户必须再次输入所需的输入,程序才能开始循环。

最佳答案

您没有在代码示例中指定 userInput 是什么,但从用法来看,它看起来是 Scanner 的实例。如果您声明了 Scanner ,然后调用 hasNextDouble(),您将得到一个符合您的用法的 boolean 结果 - 您可以将其作为 中的条件if 语句。

Scanner userInput = new Scanner(System.in);
boolean b = userInput.hasNextDouble();

图片中缺少的是 hasNextDouble() 的工作原理。看着Javadoc for Scanner :

Returns true if the next token in this scanner's input can be interpreted as a double value using the nextDouble() method. The scanner does not advance past any input.

为了回答下一个输入是否为 double 的真/假,扫描器必须等待用户的输入才能继续。

所有这些都是为了说明:您的代码看起来运行正常。如果您不想等待用户输入,则需要编写代码来反射(reflect)这一点。

关于java - 为什么我的代码必须输入两个输入才能开始运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58294197/

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