查找正数列表的算术平均值

时间:2016-02-26 21:55:57

标签: java loops mean negative-number

我创建了一个程序,允许用户输入他们希望计算算术平均数的数量。该程序工作正常,但我试图阻止程序接受负数。 我已经尝试添加一个while循环,如下所示,但是这没有做任何事情,我不确定为什么。

Scanner inputLine = new Scanner(System.in);

int numbers, start, sum=0, armean;
int array[] = new int[50];

System.out.println("program to find the arithmetic mean (average) of a list of positive numbers  ");
System.out.println("=======================");
System.out.println();
System.out.print("How many numbers do you want to Enter ? ");
numbers = inputLine.nextInt();

System.out.print("Enter " +numbers+ " Numbers : "); 
while (numbers < 0){
    System.out.println("Incorrect number entered");
    System.out.print("Enter " +numbers+ " Numbers : ");
    numbers = inputLine.nextInt();
}

for(start=0; start<numbers; start++) {
    array[start] = inputLine.nextInt();
    sum = sum + array[start];
}

armean = sum/numbers;
System.out.print("Arithmetic Mean = " +armean);

3 个答案:

答案 0 :(得分:1)

您的while循环位于代码中的错误位置。 把它放在这里:

for(start=0; start<numbers; start++) {
    int number;
    do {
      number = inputLine.nextInt();
    } while (number < 0);
    array[start] = number;
    sum = sum + array[start];
}

此外,您根本不需要阵列(如果用户输入的数字超过50个,实际上会导致错误)

for(start=0; start<numbers; start++) {
    int number;
    do {
      number = inputLine.nextInt();
    } while (number < 0);
    sum = sum + number;
}

如果你真的想让数组用numbers初始化它:

int array[] = new int[numbers];

答案 1 :(得分:0)

使用这些方案完成逻辑:

  • 您输入几个负数后跟一些正数
  • 您输入一个正数,一些负数,然后是几个正数。

执行此操作时,您应该会看到问题。 (问题 - 有一对。)当你到达每一行时,一定要查看每个变量的值。

答案 2 :(得分:0)

你循环遍历你的数组,但这根本不受你的while循环的影响,而是影响了数字。

这应该有效:

for(start=0; start<numbers; start++)
 { 
    array[start] = inputLine.nextInt();
    if (!array[start]<0)  {
    sum = sum + array[start];
  }
}