gpt4 book ai didi

java代码,求 float 的最小值、最大值和平均值

转载 作者:行者123 更新时间:2023-11-30 02:23:52 26 4
gpt4 key购买 nike

我编写了下面的代码,一切正常,只是它从不执行最后一个循环,因此输入的最后一个值永远不会计算到最小值/最大值/平均值中。知道我哪里出错了吗?

import java.util.Scanner;
public class Program4_JohnHuber {

public static void main(String[] args) {
Scanner input = new Scanner (System.in);

double total = 0;
//double numbers = 0;
int count = 1;
double largest = 0;
double smallest = Double.MAX_VALUE;
double average = 0;

System.out.print ("Please enter the grades, (Press enter when finished): ");
{
while (input.hasNextDouble()&& count<5)
{
double entered = input.nextDouble();
total = total + entered;
//count++;

//double average = 0;
if (count > 0)
{
average = total/count;
}
if (entered > largest)
{
largest = entered;
}
if (entered < smallest)
{
smallest = entered;
}
count++;
}

}
System.out.printf ("Your average grade is %3.2f,\n", average);
System.out.printf ("Your highest grade is %3.2f \n", largest);
System.out.printf ("Your lowest grade is %3.2f \n", smallest);



}
}

最佳答案

您的程序中有两个错误(假设您的意图是输入 5 个数字):

  1. 您使用count来表示您已输入的成绩数。在您输入任何成绩之前,您输入了多少个年级?这是 count 应该具有的值,但您将其初始化为错误的值。
  2. 另一个问题在于您如何编写 while:

       while (input.hasNextDouble() && count<5)

假设您已经解决了第一个问题,现在它可以让您输入 5 个数字并保留这些数字的统计信息。现在它返回到 while 循环并计算 boolean 表达式。

此时,count为5,因此要退出循环。但这种情况并没有发生,因为 首先 会评估 input.hasNextDouble()。由于您在 System.in 上使用扫描仪,这意味着程序会等待,直到您输入非空白的内容,或者直到您使用 CTRL+D 指示输入结束Linux 或 Windows 上的 CTRL+Z。 找到输入中的下一项后,如果找不到double(例如,您输入一些字母),它将退出循环;或者如果您输入一个double然后它会检查count

这两个错误的结合就是程序似乎忽略最后一个输入的原因:(1) 由于初始化 count 时出现错误,它仅对 4 个等级进行计算,而不是 5 个等级,并且 (2) 无论如何它都要求 5 级,因为 while 循环条件的部分顺序错误。

要解决第二个问题,请将其更改为

while (count < 5 && input.hasNextDouble())

这会先检查count首先,并在您有足够的成绩时立即退出循环,而不是寻找更多输入。

关于java代码,求 float 的最小值、最大值和平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46146205/

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