繁体   English   中英

方法 sum(int, int, int, int) 不适用于参数 (int)

[英]The method sum(int, int, int, int) is not applicable for the arguments (int)

创建一个名为 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() 方法放入我的 average() 方法中。 我不知道如何让它工作,因为我在 eclipse 中不断收到这个错误:

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 = ...”但是我仍然遇到同样的错误。 我不知道如何将它混为一谈,因为我习惯于在主方法中调用它,而不是在单独的方法中调用它。

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;

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

number1 + number2 + number3 + number4将这 4 个数字转换为一个,因此您尝试调用不存在的sum(int)

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

谢谢@乔丹。 我仍然指的是 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;
    }
}

这是你的问题:

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);

而且,当然,您仍然需要在获得总和后正确计算平均值。

您必须添加:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM