非法参数例外



我正在研究一个非常简单的点类,但我收到一个错误,我无法确定字符串/双精度问题发生在哪里或如何解决它。

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

问题是您的数字格式不接受字符串。

问题是格式方法采用数值,而不是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);

因为格式方法需要double而不是string.

先在这里查看:
http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html#format(double,%20java.lang.StringBuffer,%20java.text.FieldPosition)
您使用的格式方法是否与此相同?

相关内容

  • 没有找到相关文章

最新更新