我需要乘以radius*radius*pi
找到圆圈的确切区域,但我写下的代码无效。这是继续给予双倍不能被解除引用的错误...
ERROR
----jGRASP exec: javac -g Circle.java
Circle.java:7: error: double cannot be dereferenced
BigDecimal area = radius.multiply(pi);
^
1 error
CODE
import java.math.*;
public class Circle {
public BigDecimal findArea(double radius){
double pi = 3.14159;
radius = radius * radius;
BigDecimal bd = new BigDecimal("1");
BigDecimal area = pi.multiply(radius);
return area;
}
}
答案 0 :(得分:5)
解除引用不适用于基本类型。 double
是原始类型。
因此
pi.multiply(radius)
是无效的表达。
您可以使用以下内容:
BigDecimal area = BigDecimal.valueOf(pi).multiply(BigDecimal.valueOf(radius));
或者
BigDecimal area = BigDecimal.valueOf(pi*radius);
代替。
答案 1 :(得分:2)
pi
和radius
是双基本类型,这意味着它们无法解除引用,您无法使用multiply
之类的方法。试试这个:
BigDecimal area = BigDecimal.valueOf(pi * radius);
或者:
BigDecimal area = BigDecimal.valueOf(Math.PI * radius);
在示例中,我将pi
替换为Math.PI
,因为它内置于Java并且更精确。上面的代码采用Math.PI * radius
的值并将其转换为BigDecimal
。