Метод sum (int, int, int, int) не применим для аргументов (int) - PullRequest
0 голосов
/ 06 марта 2020

Создайте метод с именем Average, который вычисляет среднее число чисел, переданных в качестве параметров. Ранее созданный метод sum должен использоваться внутри этого метода!

Определите метод в следующем шаблоне:

public static int sum(int number1, int number2, int number3, int number4) {
    // you can copy your implementation of the method sum here
}

public static double average(int number1, int number2, int number3, int number4) {
    // write your code here
    // calculate the sum of the elements by calling the method sum
}

public static void main(String[] args) {
    double result = average(4, 3, 6, 1);
    System.out.println("Average: " + result);
}

Я пытаюсь поместить метод sum () в мой средний () метод. Я не могу понять, как заставить это работать, потому что я продолжаю получать эту ошибку в затмении:

The method sum(int, int, int, int) in the type Test066 is not applicable for the arguments (int)
    at Test066.average(Test066.java:12)
    at Test066.main(Test066.java:5)

Вот мой код:

public class Test066 {
    public static void main(String[] args) {
        double result = average(4, 3, 6, 1);
        System.out.println("Average: " + result);
    }

    public static int sum(int number1, int number2, int number3, int number4) {
        return number1 + number2 + number3 + number4;
    }

    public static double average(int number1, int number2, int number3, int number4) {
        int avg = sum(number1 + number2 + number3 + number4);
    }
}

Я понимаю, что есть что-то, чтобы определите усредненный метод как тип double, но я попытался изменить его на double и вызвать мою переменную "int avg = ..." как "double avg = ...", но я все еще получаю та же ошибка. Я не уверен, как его объединить, так как я привык вызывать его в своем основном методе, а не в отдельном методе.

Ответы [ 5 ]

1 голос
/ 06 марта 2020
The method sum(int, int, int, int) in the type Test066 is not applicable for the arguments (int)
  at Test066.average(Test066.java:12)
  at Test066.main(Test066.java:5)

Следующей строкой в ​​вашем коде является виновник:

int avg = sum(number1 + number2 + number3 + number4);

Ваше объявление метода sum указывает, что оно принимает 4 целых числа в качестве аргументов. Но когда вы вызываете его, вы передаете только 1 аргумент - number1 + number2 + number3 + number4 это одно целое число, а не 4.

Исправьте его в

int avg = sum(number1, number2, number3, number4);

С этим ваш код начнет компилироваться. Но это может не дать вам правильный результат. Как указали другие, вам нужно разделить сумму на количество операндов, чтобы получить среднее значение.

int avg = sum(number1, number2, number3, number4) / 4;

Также средним будет число с плавающей запятой. Таким образом, вы хотите выполнить деление с плавающей запятой и сохранить его в типе данных double, чтобы избежать усечения.

double avg = sum(number1, number2, number3, number4) / 4.0;
return avg;
0 голосов
/ 06 апреля 2020

Вам нужно будет добавить:

double avg = (double)sum(number1,number2,number3,number4)/4;
0 голосов
/ 06 марта 2020

Спасибо @ Джордан. Я все еще имел в виду метод sum (), как будто я все еще был в этом методе. Я должен был просто заменить знаки плюс запятыми. Так должно выглядеть так:

public class Test066 {

    public static void main(String[] args) {
        double result = average(4, 3, 6, 1);
        System.out.println("Average: " + result);
    }
    public static int sum(int number1, int number2, int number3, int number4) {
        return number1 + number2 + number3 + number4;
    }
    public static double average(int number1, int number2, int number3, int number4) {
        double avg = sum(number1, number2, number3, number4) / 4;
        return avg;
    }
}
0 голосов
/ 06 марта 2020

Это ваша проблема:

sum(number1 + number2 + number3 + number4)

Ваш метод

public static int sum(int number1, int number2, int number3, int number4)

Это требует 4 аргументов. Делая number1 + number2 + number3 + number4, вы передаете один аргумент, так как вы складываете все числа вместе.

Вместо этого вам нужно:

int sum = sum(number1, number2, number3, number4);

И, конечно, вам все равно необходимо правильно рассчитать среднее значение после получения суммы.

0 голосов
/ 06 марта 2020

int avg = sum(number1 + number2 + number3 + number4);

number1 + number2 + number3 + number4 преобразует эти 4 числа в одно, поэтому вы пытаетесь вызвать sum(int), которого не существует.

Попробуйте int avg = sum(number1, number2, number3, number4);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...