0

这是我的代码

import java.util.*;
import java.io.*;

public class eCheck10A
{
public static void main(String[] args)
{
  PrintStream out = System.out;
  Scanner in = new Scanner(System.in);

  out.print("Enter your integers");
  out.println("Negative = sentinel");

  List<Integer> aList = new ArrayList<Integer>();



  for (int n1 = in.nextInt(); n1 > 0; n1 = in.nextInt())
  {
          if(n1 < 0)
          {
          break;
          }
  }


 }
}

如果我想将我输入的所有数字取为 n1,并将它们平均,我如何引用所有这些数字?我将把它们放在 IF 语句中,所以如果输入负数,程序会停止并发布它们的平均值。

4

3 回答 3

2

这是您执行此任务所需的伪代码(伪代码,因为它看起来很像家庭作业/课堂作业,如果您自己搞定实现,您将成为更好的开发人员)。

因为您不需要数字本身来计算平均值,所以存储它们没有意义。平均值定义为所有数字的总和除以它们的计数,所以这就是您需要记住的全部内容。像这样的东西就足够了:

total = 0
count = 0
n1 = get_next_number()
while n1 >= 0:
    total = total + n1
    count = count + 1
    n1 = get_next_number()
if count == 0:
    print "No numbers were entered.
else:
    print "Average is ", (total / count)

我会提到其他几点。就目前而言,您的for语句将在第一个非正数 ( <= 0) 处退出,从而变得if多余。

此外,您可能希望在平均值中包含任何零: 的平均值{1,2,3} = 2与 的平均值不同{1,2,3,0,0,0} = 1

您可以在for语句本身中执行此操作,例如:

for (int n1 = in.nextInt(); n1 >= 0; n1 = in.nextInt())

然后你根本不需要if/break循环内的位,类似于我提供的伪代码。

于 2012-07-31T02:15:10.203 回答
0

您需要做的概述:创建一个变量 sum 以将所有值相加并创建另一个名为 count 的变量,该变量将用于存储列表 aList 中非负数的数量。然后将总和除以计数以找到平均值。

于 2012-07-31T02:15:46.637 回答
0

另一种计算运行平均值的方法是:
new_average = old_average + (new_number - old_average ) / count
如果你曾经为变量类型达到最大值,你会喜欢这个公式。

于 2012-07-31T02:37:48.917 回答