我在另一个Java程序上遇到了麻烦,而且它可能非常小,但出于某种原因,我无法理解问题所在。之前已经多次提出过类似的问题,但它并没有给出这个程序所需的完全相同的东西,至少给出的答案没有帮助。
程序需要计算用户最初输入的数量集的平均值。其中声明为inputNumber
。然后,程序向用户询问用户指定的每个设定量的数量。这是addedNumber
,所有这些都会添加到总计numberSum
中,然后除以inputNumber
以获得总计的平均值,该值已声明为numberAverage
。
例如:如果程序提示我输入了多少个数字,我输入4(inputNumber
),扫描仪会提示我输入4次(addedNumber
),我键入4个数字,例如数字:2,3,6和1.这些数字加在一起作为总和12(numberSum
),然后除以得到4个数字的平均值({{ 1}})。
将计算在numberAverage
循环中单独声明计数器i
,该计数器将计算提示用户的次数将增加,直到达到用户输入的数量为止。并且整个程序在for
循环上发生,直到用户输入while
作为0
的值,然后它将中断循环并终止程序。
以下是代码:
inputNumber
但问题在于:
正如你所看到的,只有循环的第一部分得到平均值,但循环第二次没有得到。我被卡住了,循环应该如何去,以便每次都计算平均值而不是第一次。我认为这与初始化有关,但将变量初始化为import java.util.Scanner;
/**
* Write a description of class AverageNumbers here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Average2
{
public static void main ()
{
int inputNumber;
double numberSum = 0;
Scanner scan = new Scanner(System.in);
while (true) {
System.out.print("Please enter the amount of numbers you want to be calculated. (0 to quit): ");
inputNumber = scan.nextInt();
if (inputNumber == 0) {
System.out.println("Program Ended");
break;
}
for ( int i = 0; i < inputNumber; i++) {
System.out.print("Please enter a value:" );
double addedNumber = scan.nextInt();
numberSum += addedNumber;
}
double numberAverage = numberSum/inputNumber;
System.out.println("Average: " + numberAverage);
}
}
}
,0
或1
并没有帮助。另外,将变量设置为-1
会使程序永远不会运行,因为条件是为了停止它。如果它确实是一个简单的初始化错误,那么有人可以解释一下代码的错误,而不是说之前已经问过这个问题吗?
答案 0 :(得分:2)
所写的代码是给出了您输入的每个号码的平均值,而不仅仅是刚刚输入的群组的平均值。
你需要&#34;重置&#34; numberSum
(numberSum = 0;
)在每组数字的开头。