1

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

错误信息是什么意思?

4

5 回答 5

2

您无需将 int 转换为 double 即可调用 Math.pow:

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));
    }
}
于 2013-09-16T03:43:49.993 回答
1

该消息仅意味着您弄乱了语法。转换需要在等号的右侧进行,而不是在您分配的变量前面。

于 2013-09-16T03:47:45.347 回答
0

假设这result实际上是 a 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);
于 2013-09-16T03:43:53.870 回答
0

Java中的这段代码:

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

会抛出编译时错误:

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

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

于 2013-09-16T03:51:51.093 回答
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);
于 2013-09-16T03:55:18.403 回答