求正数列表的算术平均值

Finding the arithmetic mean of a list of positive numbers

我创建了一个程序,允许用户输入他们希望计算算术平均值的数字数量。该程序运行良好,但我试图阻止该程序接受负数。 我已经尝试添加一个 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);

您的 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];

在这些场景中完成逻辑:

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

当你这样做时你应该看到问题。 (问题 - 有几个。)当你到达每一行时一定要查看每个变量的值。

你遍历了你的数组,但这根本没有受到你的 while 循环的影响,你反而影响了数字。

这应该有效:

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