【问题标题】:even and odd averages using array使用数组的偶数和奇数平均值
【发布时间】:2014-11-18 06:12:58
【问题描述】:

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

我不知道为什么会收到错误消息:

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

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

这是我到目前为止的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();


    }
}

另外,如果您发现任何其他可能有问题的地方,请告诉我。 谢谢。

【问题讨论】:

  • 您试图将array2 分开,但array 不是数字;它包含数字。你应该遍历array 中的所有项目并用它来做你的数学。

标签: java arrays average


【解决方案1】:

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,由于您已经在构造函数中计算了总和(或者至少看起来您打算这样做),因此您不需要在这些方法中使用循环。

编辑:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      几个错误

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

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

      3.) for (int i = l ; i &lt; numbers.length ; i++) {,您使用了l 而不是1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-21
        • 1970-01-01
        相关资源
        最近更新 更多