Java错误:参数的运算符未定义。为什么?

时间:2013-12-14 02:47:14

标签: java

在下面的代码中,您会注意到第30行和第37行这两行代码

    fahrenheit = (9.0/5)*(cel+32);

    celsius = (5.0/9)*(fahren-32);.

这些代码给了我错误"the operator - (or) + is undefined for the argument type(s) double[], int"我只是在学习Java而这个问题是我必须为学校做的一个问题。我必须有两个方法(列出的方法),并且必须使用已构建的数组创建一个表。但是我不能再往前走,因为我一直在犯这个错误。我的方法有问题吗?我将数组传递给方法错了吗?我不知道我写方法的方式是否正确。所以我也希望有人能告诉我这样做的正确方法。

public class CelciusFahrenheit {
public static void main(String [] args){
    // creates array cel and fills it. 
    double[] cel = {
            40, 39, 38, 
            37, 36, 35, 
            34, 33, 32, 31
    };


    // creates array fahren
    double[] fahren = new double[90];

    // fills array fahren
    for (int i = 30; i < fahren.length; i++)
        fahren[i] = i + 1;

    // passes fahren to method
    FahrenheitToCelsius(fahren);

    // passes cel to method
    CelsiusToFahrenheit(cel);

    }

// Method CelsiusToFahrenheit start
public static double CelsiusToFahrenheit(double[] cel){
    double fahrenheit;
    fahrenheit = (9.0/5)*(cel+32);
    return fahrenheit;
    // Method CelsiusToFahrenheit end
}
// Method FahrenheitToCelsius start
public static double FahrenheitToCelsius(double[] fahren){
    double celsius;
    celsius = (5.0/9)*(fahren-32);
    return celsius;
    // Method FahrenheitToCelsius end
}

}

2 个答案:

答案 0 :(得分:3)

fahrenheitdouble数组,而不是double。你不能从中减去一个数字。与cel相同的问题:它是double的数组,您无法为其添加数字。也许您打算在数组中添加或减去元素?不是数组本身。或者更有可能:您希望传递double作为参数,而不是double[]

让我们一步一步走。首先,修复这些方法:

public static double CelsiusToFahrenheit(double cel) {
    double fahrenheit;
    fahrenheit = (9.0/5)*(cel+32);
    return fahrenheit;
}

public static double FahrenheitToCelsius(double fahren) {
    double celsius;
    celsius = (5.0/9)*(fahren-32);
    return celsius;
}

现在您可以在输入数组中的每个元素上调用它们:

for (int i = 0; i < fahren.length; i++)
    System.out.print(FahrenheitToCelsius(fahren[i]) + " ");

System.out.println();

for (int i = 0; i < cel.length; i++)
    System.out.print(CelsiusToFahrenheit(cel[i]) + " ");

答案 1 :(得分:0)

让我们来看看这个方法......

public static double CelsiusToFahrenheit(double cel){ //These parameters.. nono
    double fahrenheit;
    fahrenheit = (9.0/5)*(cel+32); //Use all doubles (9.0/5.0)*(cel+32.0);
    return fahrenheit;
    // Method CelsiusToFahrenheit end <-- this makes no sense, read method name
}

你接受了array的cel而不仅仅是cel。将参数更改为double cel。这同样适用于您的其他方法。