gpt4 book ai didi

java - 使用Java计算第一个和最后一个数字之间并包括第一个和最后一个数字的所有数字的平均值

转载 作者:行者123 更新时间:2023-11-29 05:17:36 24 4
gpt4 key购买 nike

作业是使用一个 While 循环来获取第一个和最后一个数字,并求出中间数字的平均值。我输入了代码,我认为它在数学上是可行的,但是当我尝试显示答案(“答案是”+ 平均值)时,我不断收到错误消息,它一直在说平均值尚未初始化。

public static void whileLoop()      
{

int smallNumber = Integer.parseInt(JOptionPane.showInputDialog("Enter the smallest number:"));

int largeNumber = Integer.parseInt(JOptionPane.showInputDialog("Enter the largest number:"));

int counter = smallNumber;

int average;

int total = 0;

int numberCounter = 0;

while (smallNumber <= largeNumber)
{

total = counter + total;
counter = counter + 1;
numberCounter++;
average = total / numberCounter;

}
JOptionPane.showMessageDialog(null, "Answer is: " + average);
}

最佳答案

您必须初始化 average变量

原因是,如果您永远不会输入 while循环,程序应该如何知道要打印什么?

例如,您可以将其初始化为 0,但也许更好的解决方案是放置一些表示错误的值,例如:

int average = Integer.MIN_VALUE;

然后如果程序打印–2147483648 ( Integer.MIN_VALUE ) 你知道出了点问题。

现在,您的代码逻辑实际上也是错误的。您可以进行改进以使代码更简单和正确:

问题陈述是计算:

(sum of all numbers) / (amount of numbers)

因此您不必在每次循环时都计算平均值。您可以通过除以 total 来计算它,这是所有数字的总和 numberCounter ,这是循环结束后的数字数量。

此外,您的循环实际上是一个无限循环,因为您永远不会递增smallNumber。值所以你的循环条件 smallNumber <= largeNumber永远是真的。您改为增加 counter这是不正确的。

你的循环应该是这样的:

// ...

while(counter <= largeNumber) { // use counter here instead of smallNumber
total = counter + total;
counter = counter + 1;
numberCounter++;
}

// calculate average here
average = total / numberCounter;

//...

注意:您可能应该使用 double作为 average 的类型变量,因为这样结果会更精确。您只需进行两项更改即可:

// ...

double average = Double.NaN; // NaN means not a number

// ...

average = (double) total / numberCounter;

// ...

此外,由于您是在 while 循环之外计算平均值,因此您不再需要初始化它,但您仍然应该这样做,因为这是一种很好的做法。

关于java - 使用Java计算第一个和最后一个数字之间并包括第一个和最后一个数字的所有数字的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25984349/

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