使用数组的偶数和奇数平均值

时间:2014-11-18 06:12:58

标签: java arrays average

  

编写一个程序,从用户那里读取10个值的列表。将值放在数组中。程序应读取数组,然后计算并显示偶数输入值的平均值和奇数输入值的平均值。这应该使用对象,方法和测试器类来完成。

我无法弄清楚为什么我收到错误:

  

二元运算符的坏操作数类型。

我不知道该改变什么。我知道我的mod(%)有问题。

以下是我目前为Average课程所做的事情:

public class Average 
{
    private int[] numbers = new int[10];
    double aveEven, aveOdd,sumEven=0,sumOdd=0; 
    int oddCounter=0, evenCounter=0; 
    public Average(int[] n)
    {
        numbers = n;

        if (numbers % 2 == 0)/something is wrong here/
        { 
            evenCounter++; 
            sumEven+=n; 

        } 
        else
        { 
            oddCounter++; 
            sumOdd+=n; 

        } 
    }

    public void aveEven()
    {
        for (int i = 0; i < numbers.length; i++)
        {
            aveEven = sumEven/evenCounter;
            System.out.println("The even average is: " + aveEven);
        }
    }

    public void aveOdd()
    {
        for(int i = l; i < numbers.length;  i++)
        {
            aveOdd = sumOdd/oddCounter;
            System.out.println("The odd average is: " + aveOdd);
        }
    }
}

对于AverageTester课程,我有以下内容:

import java.util.Scanner;
public class AverageTester 
{public static void main(String[] args) 
     {
        int[] integer = new int[10];

        Scanner input = new Scanner(System.in);

        for(int i=0 ; i < 10 ; i++)
        {
            System.out.print("Please enter a number : ");
            integer[i] = input.nextInt();
        }

        Average example = new Average(integer);
        example.aveOdd();


    }
}

另外,如果您发现其他任何可能出错的信息,请告知我们。 谢谢。

3 个答案:

答案 0 :(得分:2)

numbers是一个数组,因此numbers % 2无效。您应该遍历数组并在数组元素上使用%运算符。 +=运算符也应该应用于数组的元素(即numbers[i])而不是整个数组。

numbers = n;
for (int i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 == 0) { 
        evenCounter++; 
        sumEven+=numbers[i]; 
    }  else { 
        oddCounter++; 
        sumOdd+=numbers[i]; 
    } 
}

至于aveEvenaveOdd,因为你已经计算了构造函数中的总和(或者至少它看起来像你打算做的那样),你不需要在这些中使用循环方法

编辑:

我最初假设你打算计算数组中偶数位置的数字平均值和奇数位数的平均值。在再次阅读问题之后,我认为奇数/偶数指的是数字本身,所以我相应地更改了代码。

答案 1 :(得分:0)

Numbers是一个数组并且将数组与int进行比较并不起作用,你可以这样做(取决于你的逻辑):

    for(int number : numbers){
        if(number % 2 == 0){
            evenCounter++;
            sumEven += n;

        }else{
            oddCounter++;
            sumOdd += n;

        }
    }

答案 2 :(得分:0)

几个错误

1。)如果(numbers % 2 == 0),数字是一个数组,请在此处使用索引并循环。像这样if (numbers[i] % 2 == 0)

2。)sumEven += n;,这里n是一个数组,需要使用索引。

3。)for (int i = l ; i < numbers.length ; i++) {,您使用了l代替1