2012-08-15 47 views
0

这个简单的程序应该能够获得标记百分比和批发成本,并计算出零售价格,我把一个行动监听器放到了CALCULATE按钮上,但是当我按下calculate按钮时出现这个错误:在这个简单的GUI程序中的错误

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: 
For input string: "Enter the markup precentage" 
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) 
at java.lang.Double.parseDouble(Unknown Source) 
at mm$CalcListerner.actionPerformed(mm.java:58) 
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 

有人可以帮我解决这个问题吗?

有人可以解释这些错误信息,因为我真的没有得到任何的?

我的代码是:

import javax.swing.*; 
import java.awt.event.*; 

public class mm extends JFrame { 

    private JTextField WholesaleCost; 
    private JTextField markupPresentage; 
    private JLabel WCost; 
    private JLabel MPrecentage; 
    private JButton button; 
    private JPanel pannel; 
    private final int Width = 250; 
    private final int height = 320; 

    public mm() { 
     setTitle("Retail Price Calculator"); 
     setSize(Width, height); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 
     buildPanel(); 
     add(pannel); 
    } 

    private void buildPanel() { 
     WholesaleCost = new JTextField(10); 
     markupPresentage = new JTextField(10); 

     WCost = new JLabel("enter the Whole Sale cost"); 
     MPrecentage = new JLabel("Enter the markup precentage"); 

     button = new JButton("Calculate"); 
     button.addActionListener(new CalcListerner()); 

     pannel = new JPanel(); 
     pannel.add(WholesaleCost); 
     pannel.add(markupPresentage); 
     pannel.add(WCost); 
     pannel.add(MPrecentage); 
     pannel.add(button); 
    } 

    private class CalcListerner implements ActionListener { 

     public void actionPerformed(ActionEvent e) { 
      String WSaleinput; 
      String MPres; 
      WSaleinput = WholesaleCost.getText(); 
      MPres = MPrecentage.getText(); 

      double Value = Double.parseDouble(WSaleinput) * (Double.parseDouble(MPres)/100); 

      JOptionPane.showMessageDialog(null, "Retail Price is " + Value); 
     } 
    } 

    public static void main(String[] args) { 
     mm x = new mm(); 
    } 
} 
+0

是出现什么错误? – Vulcan 2012-08-15 02:48:10

+0

我仍然没有看到它。将它直接添加到您的问题中,因为您可能没有足够的信誉来发布链接。 – Vulcan 2012-08-15 02:48:51

+0

@Vulcan异常在线程 “AWT-EventQueue的-0” java.lang.NumberFormatException:对于输入字符串: “输入标记PRECENTAGE” \t在sun.misc.FloatingDecimal.readJavaFormatString(未知来源) \t在java.lang中。 Double.parseDouble(来源不明) \t在毫米$ CalcListerner.actionPerformed(mm.java:58) \t在javax.swing.AbstractButton.fireActionPerformed(来源不明) \t在javax.swing.AbstractButton中的$ Handler.actionPerformed(未知源) \t at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) \t at javax.swing.DefaultButtonModel.setPressed(Unknown So urce) \t ...........更多 – ChawBawwa 2012-08-15 02:50:24

回答

3

您正在尝试引用错误的组件。

WSaleinput=WholesaleCost.getText(); 
MPres =MPrecentage.getText(); 

实际上应该是

WSaleinput = WholesaleCost.getText(); 
MPres = markupPresentage.getText(); 
+0

非常感谢你给我解释错误信息 – ChawBawwa 2012-08-15 03:03:09

+1

基本上你说“请java可以转换”输入markup precentage“加倍”。 Java说:“我无法识别你以数字或数字格式传递给我的内容” - 因此,“NumberFormatException”。它只是说,价值不是Java可以转换的可识别的数字格式。 – MadProgrammer 2012-08-15 03:05:55

3

您正在试图解析MPrecentage.getText()为双,但是这是你的标签的价值,而不是所输入的值。

您应该设置MPresmarkupPercentage.getText();

错误,NumberFormatException的,是一个如果JVM不能得到一个数字出来,你给它的字符串时引发。在这种情况下,您尝试从文本“输入标记百分比”解析数字

+0

打我吧;) – MadProgrammer 2012-08-15 02:56:38

+0

只有几秒钟:) – digitaljoel 2012-08-15 02:57:51

+0

非常感谢你能给我解释一下错误信息 – ChawBawwa 2012-08-15 03:04:12