我不确定这里发生了什么,但这里有一个我遇到问题的部分(还有一些其他但我认为如果我能在这里找出逻辑,我可以在其他地方应用它)。 我最近有一个问题,我使用点,但无法得到小数,所以as suggested,我切换到point2D允许双打。由于切换我一直得到错误,我似乎无法理解如何修复,因为我没有看到原因(我知道更改为point2D触发它但我看不到连接)。
我有以下代码:
Double x_data = (Double) data.get(k);
for (int c = 0; c <= 100; c++) { //the c variable caps the percent
double percent = roundTwoDecimals(c*.01);
double value1 =(sum - percent * x_data);
data是一个point2D的列表(我要转换为double,sum是我发送给这个方法的一个变量,它实际上是一个整数,但我把它转换为double。在eclipse中我得到了可怕的红色下划线在'percent * x_data'下。我用谷歌搜索并看到这个错误通常是由于某人试图乘以一个字符串或其他东西但我相当确定这些都是双倍的。我现在得到以下错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The operator * is undefined for the argument type(s) double, Point2D.Double
The operator * is undefined for the argument type(s) double, Point2D.Double
Syntax error, insert ")" to complete ArgumentList
The operator * is undefined for the argument type(s) double, Point2D.Double
据我所知,这个过程中涉及的所有内容都是双倍的或者是双重的,所以我不确定为什么Point2D会涉及这些运算符。
我还有一个限制小数位的方法:
static double roundTwoDecimals(double d) {
DecimalFormat twoDForm = new DecimalFormat("#.###");
return Double.valueOf(twoDForm.format(d));
但Double.valueOf不再是其中一个选项,所以我得到了错误(Point2D错误)(绕过它,我现在只返回d而不限制小数)。
请帮忙。我不认为point2D或其他任何问题,但我必须在结构上做错事。
由于
答案 0 :(得分:3)
根据堆栈跟踪,x_data的类型为Point2D.Double
,而不是java.lang.Double
。
检查您的导入,移除Point2D.Double
并添加java.lang.Double
。
现在,您无法将Point2D
投射到Double
。您可能意味着使用返回yourDoublePoint2D.getX()
s的yourDoublePoint2D.getY()
adn double
(无需强制转换)。
作为旁注,你可以这样写:
Double d1 = 1.5;
double d2 = 2.3;
double d3 = d1 * d2;
修改强>
您可能会导入Point2D.Double
类:
import java.awt.geom.Point2D.*;
或
import java.awt.geom.Point2D.Double;
这会与java.lang.Double
创建名称冲突。请参阅下面的代码示例,该代码可以按预期工作:
import java.awt.geom.Point2D; //Note: only import Point2D, not Point2D.Double
public class Test {
public static void main(String[] args) {
Point2D.Double point = new Point2D.Double(1.5, 2.5);
double x = point.getX(); //1.5
double y = point.getY(); //2.5
Double xx = point.getX(); //1.5
Double yy = point.getY(); //2.5
}
}
答案 1 :(得分:0)
如果你没有导入Point2D.Double,但是用完整的包名称引用它的所有实例,那么“unadorned”Double应该是java.lang.Double。