【问题标题】:need some help on java method showMessageDialog在 java 方法 showMessageDialog 上需要一些帮助
【发布时间】:2013-09-02 14:57:20
【问题描述】:

这是我的代码:

//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” 在 sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241) 在 java.lang.Double.parseDouble(Double.java:540) 在 DebugTwo4.main(DebugTwo4.java:16)

【问题讨论】:

  • cost = Double.parseDouble("cost"); "Double" 检查该行。
  • @user2731240 "cost" 是字符串值而不是变量。

标签: java swing debugging


【解决方案1】:

"cost" 不是双...

因此,这将失败...

cost = Double.parseDouble("cost");

我想你是说

cost = Double.parseDouble(costString);

您可能还想考虑使用JSpinner 甚至JFormattedTextField,它们旨在限制用户输入的内容...

【讨论】:

  • 谢谢~我第一次在堆栈溢出上发帖,不过我自己也发现了错误
【解决方案2】:

问题来了:

Double.parseDouble("cost");

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

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

Double.parseDouble(costString);

【讨论】:

    【解决方案3】:
     try
      {
         cost = Double.valueOf(costString);
      }
     catch (NumberFormatException e)
      {
          System.out.println("NumberFormatException occured");
      }
    

    而不是

    Double.parseDouble("cost");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多