2013-08-30 3 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); 
    } 
} 

и сообщение об ошибке: Исключение в потоке «основной» 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 «cost» - это строковое значение, а не переменная. – gjman2

ответ

3

"cost" не двойной ...

Таким образом, это не даст ...

cost = Double.parseDouble("cost"); 

Я думаю, что вы имели в виду

cost = Double.parseDouble(costString); 

Вы можете также рассмотреть вопрос об использовании JSpinner или даже JFormattedTextField, которые предназначены ограничить то, что входит пользователь. ..

+0

+1 для того, чтобы быть быстрее и важнее правильно :-) –

+0

спасибо ~ мой первый раз, чтобы опубликовать переполнение стека, я сам понял ошибку – paradox

2

Вот проблема:

Double.parseDouble("cost"); 

Метод parseDouble ожидает строку, которая представляет действительное значение double, но вы передаете ему «стоимость», что является недопустимым.

Вместо этого я считаю, что вам нужно передать переменную costString к нему, как читает двойное значение в нем:

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

вместо

Double.parseDouble("cost"); 
Смежные вопросы