非法论据例外
我正在研究一个非常简单的点类,但我收到一个错误,我无法确定String / double问题发生在哪里或如何修复它。
public String getDistance (double x1,double x2,double y1,double y2) { double X= Math.pow((x2-x1),2); double Y= Math.pow((y2-y1),2); double distance = Math.sqrt(X + Y); DecimalFormat df = new DecimalFormat("#.#####"); String pointsDistance = (""+ distance); pointsDistance= df.format(pointsDistance); return pointsDistance; }
和测试代码
double x1=p1.getX(), x2=p2.getX(), y1=p1.getY(), y2=p2.getY(); pointsDistance= p1.getDistance(x1,x2,y1,y2);
编辑
我忘了添加我收到的错误:
Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Number at java.text.DecimalFormat.format(Unknown Source) at java.text.Format.format(Unknown Source) at Point.getDistance(Point.java:41) at PointTest.main(PointTest.java:35)
您传递了一个String
,但format
方法需要一个double
并返回一个String
。 改变
String pointsDistance = (""+ distance); pointsDistance= df.format(pointsDistance);
至
String pointsDistance = df.format(distance);
替换这个:
String pointsDistance = (""+ distance); pointsDistance= df.format(pointsDistance);
有:
String pointsDistance = df.format(distance);
问题是您的数字格式不接受字符串。
问题是format方法采用数值而不是String
。 请尝试以下方法:
public String getDistance(double x1, double x2, double y1, double y2) { double X = Math.pow((x2-x1), 2); double Y = Math.pow((y2-y1), 2); double distance = Math.sqrt(X + Y); DecimalFormat df = new DecimalFormat("#.#####"); String pointsDistance = df.format(distance); return pointsDistance; }
使用
String pointsDistance = df.format(distance);
因为format方法需要double
而不是string
。