Java转换错误:意外类型。 required:变量,found:value

时间:2013-09-16 03:40:23

标签: java casting

在Java中,我试图将int转换为double,然后返回int。

我收到此错误:

unexpected type
          (double)(result) =  Math.pow((double)(operand1),(double)(operand2));
          ^
  required: variable
  found:    value

从这段代码:

(double)(result) =  Math.pow((double)(operand1),(double)(operand2));
return (int)(result);

错误消息是什么意思?

5 个答案:

答案 0 :(得分:2)

为了调用Math.pow,您不需要将int强制转换为double:

package test;

public class CastingTest {
    public static int exponent(int base, int power){
        return ((Double)Math.pow(base,power)).intValue();
    }
    public static void main(String[] arg){
        System.out.println(exponent(5,3));
    }
}

答案 1 :(得分:1)

这条消息只是意味着你搞砸了语法。施法需要在等于的右侧,而不是在你指定的变量前面。

答案 2 :(得分:0)

我们假设result实际上是double,那么您只需要做...

result = Math.pow((double)(operand1),(double)(operand2));

现在,我们假设result实际上是int,那么您只需要这样做......

result = (int)Math.pow((double)(operand1),(double)(operand2));

<强>更新

根据Patricia Shanahan的反馈,代码中存在许多不必要的噪音。如果没有进一步的背景,很难完全评论,但是,operand1operand2明确地double是不可能的(并且无益)。 Java能够自己解决这个问题。

Math.pow(operand1, operand2);

答案 3 :(得分:0)

Java中的代码:

double my_double = 5;
(double)(result) = my_double;  

将抛出编译时错误:

The left-hand side of an assignment must be a variable

不允许对分配给等号的左侧的变量进行强制转换。它甚至没有意义代码意味着什么。您是否试图提醒编译器您的变量是双精度的?好像它还不知道?

答案 4 :(得分:0)

你可能打算:

double result =  Math.pow((double)(operand1),(double)(operand2));
return (int)(result);

或等效但更简单:

double result =  Math.pow((double)operand1,(double)operand2);
return (int)result;

甚至:

return (int)Math.pow((double)operand1,(double)operand2);