取用户输入数的平均值

时间:2012-07-31 02:08:59

标签: java

这是我的代码

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语句中,所以如果输入一个负数,程序就会停止并发布它们的平均值。

3 个答案:

答案 0 :(得分: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位,类似于我提供的伪代码。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

另一种做平均值的方法是:
new_average = old_average +(new_number - old_average)/ count
如果你曾经为变量类型命中了max,你会欣赏这个公式。