在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);
错误消息是什么意思?
答案 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的反馈,代码中存在许多不必要的噪音。如果没有进一步的背景,很难完全评论,但是,operand1
和operand2
明确地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);