这是我的代码:
//DebugTwo4.java
import javax.swing.JOptionPane;
public class DebugTwo4
{
public static void main(String[] args)
{
String costString;
double cost;
double tax = 0.06;
costString = JOptionPane.showInputDialog(null,
"Enter price of item you are buying", "Purchases",
JOptionPane.INFORMATION_MESSAGE);
cost = Double.parseDouble("cost");
JOptionPane.showMessageDialog(null,"With " + tax * 100 + "% tax, purchase is $" + cost + cost * tax);
System.exit(0);
}
}
,错误信息是: 线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“cost” at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241) 在java.lang.Double.parseDouble(Double.java:540) 在DebugTwo4.main(DebugTwo4.java:16)
答案 0 :(得分:3)
"cost"
不是双重的......
因此,这将失败......
cost = Double.parseDouble("cost");
我认为你的意思是
cost = Double.parseDouble(costString);
您可能还想考虑使用旨在限制用户输入内容的JSpinner
甚至JFormattedTextField
...
答案 1 :(得分:2)
问题在于:
Double.parseDouble("cost");
parseDouble方法需要一个表示有效double
值的字符串,但是您将“cost”传递给它,这是无效的。
相反,我相信您需要将costString
变量传递给它,因为它正在读取其中的双精度值:
Double.parseDouble(costString);
答案 2 :(得分:1)
try
{
cost = Double.valueOf(costString);
}
catch (NumberFormatException e)
{
System.out.println("NumberFormatException occured");
}
而不是
Double.parseDouble("cost");