Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用数组的奇偶平均数_Java_Arrays_Average - Fatal编程技术网

Java 使用数组的奇偶平均数

Java 使用数组的奇偶平均数,java,arrays,average,Java,Arrays,Average,编写一个程序,从用户处读取10个值的列表。将值放入数组中。程序应该读取数组,然后计算并显示偶数输入值的平均值和奇数输入值的平均值。这应该使用对象、方法和tester类来完成 我无法理解收到错误的原因: 二进制运算符的操作数类型错误 我不知道要改变什么。我知道我的mod(%)有问题 以下是我到目前为止在平均值课程中得到的信息: public class Average { private int[] numbers = new int[10]; double aveEven, a

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

我无法理解收到错误的原因:

二进制运算符的操作数类型错误

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

以下是我到目前为止在
平均值
课程中得到的信息:

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);
        }
    }
}
另外,如果您发现任何其他可能错误的地方,请告诉我。
谢谢。

numbers
是一个数组,因此
numbers%2
无效。您应该在数组上循环,并对数组的元素使用%运算符。
+=
运算符也应应用于数组的一个元素(即
数字[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]; 
    } 
}
number=n;
for(int i=0;i
至于
aveen
aveOdd
,由于您已经在构造函数中计算了和(或者至少看起来这是您想要做的),所以在这些方法中不需要循环

编辑:


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

数字是一个数组,将数组与int进行比较是不可行的,您可以这样做(取决于您的逻辑):

很少出错

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

2.
sumEven+=n,这里再次n是一个数组,需要使用索引


3.
对于(int i=l;i
,您使用了
l
而不是
1

您试图将
数组
除以
2
,但
数组
不是一个数字;它包含数字。您可以循环
数组中的所有项
,并用它进行计算。
numbers = n;
for (int i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 == 0) { 
        evenCounter++; 
        sumEven+=numbers[i]; 
    }  else { 
        oddCounter++; 
        sumOdd+=numbers[i]; 
    } 
}
    for(int number : numbers){
        if(number % 2 == 0){
            evenCounter++;
            sumEven += n;

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

        }
    }