2

这是我的代码:

//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) at java.lang.Double.parseDouble(Double .java:540) 在 DebugTwo4.main(DebugTwo4.java:16)

4

3 回答 3

3

"cost"不是双...

因此,这将失败......

cost = Double.parseDouble("cost");

我想你的意思是

cost = Double.parseDouble(costString);

您可能还想考虑使用一个JSpinner或什JFormattedTextField至旨在限制用户输入的内容......

于 2013-08-30T01:19:03.897 回答
2

这是问题所在:

Double.parseDouble("cost");

parseDouble 方法需要一个表示有效值的字符串,double但您将“成本”传递给它,这是无效的。

相反,我认为您需要将costString变量传递给它,因为它正在读取其中的双精度值:

Double.parseDouble(costString);
于 2013-08-30T01:19:22.883 回答
1
 try
  {
     cost = Double.valueOf(costString);
  }
 catch (NumberFormatException e)
  {
      System.out.println("NumberFormatException occured");
  }

代替

Double.parseDouble("cost");
于 2013-08-30T01:22:06.503 回答