2013-08-30 71 views
2

这里一些帮助是我的代码:需要在Java方法showMessageDialog

//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:对于输入字符串:“成本” 在sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241) 在java.lang.Double.parseDouble(Double.java:540) 在DebugTwo4.main(DebugTwo4.java:16)

+0

'成本= Double.parseDouble (“成本”);''双重'检查该行。 –

+0

@ user2731240“成本”是字符串值而不是变量。 – gjman2

回答

3

​​不是双...

因此,这将失败...

cost = Double.parseDouble("cost"); 

我认为你的意思

cost = Double.parseDouble(costString); 

您可能还需要考虑使用JSpinner甚至其目的是为了限制用户输入的JFormattedTextField。 ..

+0

+ +1为更快更重要的正确:-) –

+0

谢谢〜我第一次发布堆栈溢出,我已经找到了错误 – paradox

2

这里的问题是:

Double.parseDouble("cost"); 

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

相反,我认为你需要将costString变量传递给它作为在它读取double值:

Double.parseDouble(costString); 
1
try 
    { 
    cost = Double.valueOf(costString); 
    } 
catch (NumberFormatException e) 
    { 
     System.out.println("NumberFormatException occured"); 
    } 

,而不是

Double.parseDouble("cost");