2017-03-16 71 views
0

此代碼在插入半徑值後給我一個錯誤。爲什麼我的toString JOptionPane沒有顯示?

「異常線程 」main「 java.util.IllegalFormatConversionException:d = java.lang.Double中的」

import javax.swing.*; 
public class TestCircle { 

public static void main(String[]args) 
{ 
String rad1 = JOptionPane.showInputDialog("Please enter circle 1 radius: \n"); 
Circle circle1 = new Circle(); 
circle1.setRadius(Integer.parseInt(rad1)); 

String rad2 = JOptionPane.showInputDialog("Please enter circle 2 radius: \n"); 

Circle circle2 = new Circle(Integer.parseInt(rad2)); 

    JOptionPane.showMessageDialog(null,circle1.toString()); 
} 


    public String toString() 
{ return   String.format("Radius:%d\nDiameter:%d\nCircumference:%.2f\nArea%.2f\n",getRadius(),circumference(),area()); 
} 
+0

添加完整的堆棧跟蹤和相關的代碼 – Jens

+0

異常線程 「main」 java.util.IllegalFormatConversionException:d = java.lang.Double中 \t在$的java.util.Formatter FormatSpecifier.failConversion(格式化。 Java的:4045) \t在$的java.util.Formatter FormatSpecifier.printInteger(Formatter.java:2748) \t在$的java.util.Formatter FormatSpecifier.print(Formatter.java:2702) \t在的java.util.Formatter .format(Formatter.java:2488) \t at java.util.Formatter.format(Formatter.java:2423) \t at java.lang.String.format(String.java:2792) \t at Circle.toString(Circle.java:52) \t at TestCircle.main(TestCircle.java:21) –

+0

添加'Circle .toString'到你的問題使用編輯功能。不作爲評論 – Jens

回答

0

你的方法circumference()area()不返回double值。

0

我的toString方法缺少直徑()...一旦包含它,它完美的工作。

public String toString() 
{ 
return String.format("Radius:%d\nDiameter:%d\nCircumference:%.2f\nArea%.2f\n", getRadius(),diameter(), circumference(), area()); 
}