я не понимаю строку программного кода - PullRequest
0 голосов
/ 29 сентября 2019

Это мой код для класса, в котором я объявил все методы, которые будут вызываться в основном классе.У меня возникают трудности при написании кода getAverageValue, поскольку я не знаю, как.

import java.util.Random;

public class MyCalculator
{
    private int min;
    private int max;
    private int sum;
    private int average;

    public int[] generatedRandomData()
    {
        int  inputData[]  =  new int[10];
        Random  generatedRandom  =  new Random();

        for(int i=0; i<10; i++)
        {
            inputData[i]  =  generatedRandom.nextInt(100);
        }
        return  inputData;
    }

    public int getMaxValue (int[] inputData)
    {
        int max;
        max = inputData[0];

        for (int i = 1; i <inputData.length; i++) 
        {
            if(max < inputData[i])
                max = inputData[i];
        }

        return max;
    }

    public int getMinValue (int[] inputData)
    {
        int min;
        min =inputData[0];

        for (int i = 1; i <inputData.length; i++) 
        {
            if(min > inputData[i])
                min = inputData[i];
        }

        return min;
    }

    public int getSumValue (int[] inputData)
    {
        int sum;
        sum =inputData[0];

        for (int i = 1; i <inputData.length; i++) 
        {
            sum+=inputData[i];
        }

        return sum;
    }

    public float getAverageValue (int[] inputData, int getSumValue)
    {
        int average= 0;

        for (int i = 1; i <inputData.length; i++) 
        {
            average = getSumValue/inputData.length;
        }

        return average;

    }

}

Хотя это мой код для моего основного класса:

public class MyApp 
{
    public static void main (String[] args)
    {
        MyCalculator calculator = new MyCalculator();
        int [] inputData = calculator.generatedRandomData();
        System.out.println("The generated values are: ");
        for (int value: inputData)
            System.out.print(value + ", ");
        System.out.println();
        System.out.println();

        System.out.println("Max Value: " + calculator.getMaxValue(inputData));
        System.out.println("Min Value: " + calculator.getMinValue(inputData));
        System.out.println("Sum Value: " + calculator.getSumValue(inputData));
        System.out.println("Avg Value: " + calculator.getAverageValue(calculator.getSumValue(inputData), inputData.length));

    }
}

При компиляции этого кодаЯ получаю следующую ошибку:

incompatible types: int cannot be converted to int[]
                System.out.println("Avg Value: " + calculator.getAverageValue(calculator.getSumValue(inputData), inputData.length));
                                                                                                    ^

Note: Some messages have been simplified;

Ответы [ 3 ]

1 голос
/ 29 сентября 2019

Подпись getAverageValue равна

public float getAverageValue (int[] inputData, int getSumValue)

, т. Е. Метод ожидает входные данные в виде массива int[], а затем значение суммы.

Вы называете это как

calculator.getAverageValue(calculator.getSumValue(inputData), inputData.length)

то есть со значением суммы (которая является int - «несовместимый тип», на который жалуется ваш компилятор) и количеством входов.

Правильно будет:

calculator.getAverageValue(inputData, calculator.getSumValue(inputData))

Примечание: ваша реализация, вероятно, не соответствует вашим ожиданиям.См. Целочисленное деление: как вы производите двойное число? и подумайте, действительно ли вам нужен цикл там.

1 голос
/ 29 сентября 2019

Это ваше первоначальное утверждение:

System.out.println("Avg Value: " + calculator.getAverageValue(calculator.getSumValue(inputData), inputData.length));

Если мы разделим это на части, чтобы сделать только одну вещь за раз, мы получим:

sum = calculator.getSumValue(inputData);
len = inputData.length;
average = calculator.getAverageValue(sum, len);
text = "Avg Value: " + average;
System.out.println(text);

Оба выполняют одно и то же,но разделенный, это просто очень многословно .

0 голосов
/ 29 сентября 2019

Правильный код:

System.out.println("Avg Value: " + 
    calculator.getAverageValue(inputData, calculator.getSumValue(inputData)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...