I am working on a really simple point class but I am getting an error and I can't pinpoint where the String/double problem is happening or how to fix it.
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;
}
and the test code
double x1=p1.getX(),
x2=p2.getX(),
y1=p1.getY(),
y2=p2.getY();
pointsDistance= p1.getDistance(x1,x2,y1,y2);
EDIT
I forgot to add the error I'm receiving:
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)
You passed a
String
, but theformat
method expects adouble
and returns aString
. Change fromto
Replace this:
with:
The problem is that your number format doesn't accept a string.
Check out here first:
http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html#format(double,%20java.lang.StringBuffer,%20java.text.FieldPosition)
Does your use of format method same as that?
The problem is that the format method takes a numeric value, not a
String
. Try the following:Use
as the format method expects a
double
and not astring
.