简体   繁体   English

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

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

Create a method called average that calculates the average of the numbers passed as parameters.创建一个名为 average 的方法,用于计算作为参数传递的数字的平均值。 The previously created method sum must be used inside this method!必须在此方法中使用先前创建的方法 sum!

Define the method in the following template:在以下模板中定义方法:

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

I'm struggling with putting a sum() method within my average() method.我正在努力将 sum() 方法放入我的 average() 方法中。 I can't figure out how to get it to work because I keep getting this error in eclipse:我不知道如何让它工作,因为我在 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)

Here is my code:这是我的代码:

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

I understand it has something to do with me defining the average method as a double type, but I've tried changing them out to double and calling my variable "int avg = ..." as "double avg = ..." but I'm still getting the same error.我知道这与我将平均方法定义为 double 类型有关,但我尝试将它们更改为 double 并将我的变量“int avg = ...”称为“double avg = ...”但是我仍然遇到同样的错误。 I'm not sure how to lump it in since I'm used to calling it in my main method, not in a separate method.我不知道如何将它混为一谈,因为我习惯于在主方法中调用它,而不是在单独的方法中调用它。

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)

The following line in your code is the culprit:代码中的以下行是罪魁祸首:

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

Your sum method declaration indicates that it accepts 4 integers as arguments.您的sum方法声明表明它接受 4 个整数作为参数。 But when you call it, you are passing only 1 argument - number1 + number2 + number3 + number4 is one integer, not 4.但是当你调用它时,你只传递了 1 个参数 - number1 + number2 + number3 + number4是一个整数,而不是 4。

Correct it to更正为

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

With this your code will start compiling.有了这个,您的代码将开始编译。 But it might not give you the correct result.但它可能不会给你正确的结果。 As others have indicated, you need to divide the sum with number of operands to get an average.正如其他人所指出的,您需要将总和除以操作数的数量以获得平均值。

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

Also, the average will be a floating point number.此外,平均值将是一个浮点数。 So you would want to do a floating point division and store it in a double data type to avoid truncation.因此,您需要进行浮点除法并将其存储在double数据类型中以避免截断。

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

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

number1 + number2 + number3 + number4 converts those 4 numbers into one, so you are trying to call sum(int) which doesn't exist. number1 + number2 + number3 + number4将这 4 个数字转换为一个,因此您尝试调用不存在的sum(int)

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

Thanks @Jordan.谢谢@乔丹。 I was still referring to the sum() method as though I were still in that method.我仍然指的是 sum() 方法,就好像我还在那个方法中一样。 I should've just replaced the plus signs with commas.我应该用逗号代替加号。 So it should look like this:所以它应该是这样的:

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

This is your issue:这是你的问题:

sum(number1 + number2 + number3 + number4)

Your method is你的方法是

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

That takes 4 arguments.这需要 4 个参数。 By doing number1 + number2 + number3 + number4 you are passing one argument, since you are adding all the numbers together.通过执行number1 + number2 + number3 + number4您传递了一个参数,因为您将所有数字加在一起。

What you want instead is:你想要的是:

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

And, of course, you still need to calculate the average correctly after getting the sum.而且,当然,您仍然需要在获得总和后正确计算平均值。

您必须添加:

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

暂无
暂无

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

相关问题 类型中的方法不适用于参数(int) - The method in the type is not applicable for the arguments (int) ArrayList 类型中的方法 set(int, Int)<int> 不适用于 arguments (int, int) 长度无法解析或不是字段</int> - The method set(int, Int) in the type ArrayList<Int> is not applicable for the arguments (int, int) length cannot be resolved or is not a field PrintStream 类型中的方法 println(int) 不适用于参数 (String, int, int, int) - The method println(int) in the type PrintStream is not applicable for the arguments (String, int, int, int) Java Writer 错误:Writer 类型中的方法 write(char[], int, int) 不适用于 arguments (int, double, int, String) - Java Writer error: The method write(char[], int, int) in the type Writer is not applicable for the arguments (int, double, int, String) 错误 java 方法组合Sum(int[], int, List<integer> ) 类型中的解决方案不适用于 arguments (int[], int, boolean)</integer> - error java The method combinationSum(int[], int, List<Integer>) in the type Solution is not applicable for the arguments (int[], int, boolean) FragmentTransaction类型的方法add(int,Fragment)不适用于参数(int,WeatherFragment) - The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, WeatherFragment) BufferedImage类型的方法getRGB(int,int)不适用于参数(..) - The method getRGB(int, int) in the type BufferedImage is not applicable for the arguments (..) prosedure_jsp类型的pro(int,int)方法不适用于参数() - The method pro(int, int) in the type prosedure_jsp is not applicable for the arguments () Arrays 类型中的 asList(T[]) 方法不适用于参数 (int, int) - The method asList(T[]) in the type Arrays is not applicable for the arguments (int, int) PreparedStatement 类型中的 setString(int, String) 方法不适用于参数 (int, String[]) - The method setString(int, String) in the type PreparedStatement is not applicable for the arguments (int, String[])
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM