Java 使用JFrame时出现NumberFormatException

Java 使用JFrame时出现NumberFormatException,java,jframe,actionlistener,jtextfield,numberformatexception,Java,Jframe,Actionlistener,Jtextfield,Numberformatexception,代码应该获取订单及其价格,并将其保存在各自的ArrayList中 public class SetMenu0{ private double price; private int size; private String output; private String priceOutput; String next; JTextField orderIn; JTextField priceIn; private JFrame o

代码应该获取订单及其价格,并将其保存在各自的ArrayList中

public class SetMenu0{

    private double price;
    private int size;
    private String output;
    private String priceOutput;
    String next;
    JTextField orderIn;
    JTextField priceIn;

    private JFrame orderInput;

    JPanel txtFldPanel;
    JPanel btnPanel;

    ArrayList orderList = new ArrayList<String>();
    ArrayList priceList = new ArrayList<Double>();

    public SetMenu0()
    {
        orderInput = new JFrame();
        orderInput.setTitle("Input Order and Price");
        orderInput.setSize(200,350);
        orderInput.getContentPane();
        orderInput.setLayout(new BorderLayout());
        orderInput.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel txtFldPanel = new JPanel();
        orderIn = new JTextField(10);
        priceIn = new JTextField(5);
        txtFldPanel.add(orderIn);
        txtFldPanel.add(priceIn);

        JPanel btnPanel = new JPanel();
        JButton addBtn = new JButton("ADD");
        btnPanel.add(addBtn);
        addBtn.addActionListener(new ButtonListener());
        addBtn.setActionCommand("add");
        JButton fnshBtn = new JButton("FINISH");
        btnPanel.add(fnshBtn);
        addBtn.addActionListener(new ButtonListener());
        fnshBtn.setActionCommand("fnsh");

        size = orderList.size();

        Container cont = orderInput.getContentPane();
        cont.add(txtFldPanel,BorderLayout.NORTH);
        cont.add(btnPanel,BorderLayout.SOUTH);

        orderInput.pack();
    }

    private class ButtonListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String actionEnter = e.getActionCommand();
            if(actionEnter.equals("add"))
            {
                orderList.add(orderIn.getText());
                priceList.add(Double.parseDouble(priceIn.getText()));
                orderIn.setText("");
                priceIn.setText("");
            }
            else if(actionEnter.equals("fnsh"))
            {
                orderInput.dispose();
            }
        }
    }

    public JFrame getFrame()
    {
        return orderInput;
    }

    public ArrayList getOrd()
    {
        return orderList;
    }

    public ArrayList getPri()
    {
        return priceList;
    }

    public int getSize()
    {
        return size;
    }

}
public类SetMenu0{
私人双价;
私有整数大小;
私有字符串输出;
私有字符串输出;
下一个字符串;
JTextField-orderIn;
JTextField-pricin;
私有JFrame命令输入;
JPanel txtFldPanel;
JPanel btnPanel;
ArrayList orderList=新建ArrayList();
ArrayList priceList=新的ArrayList();
公共设置菜单0()
{
orderInput=newjframe();
orderInput.setTitle(“输入订单和价格”);
orderInput.setSize(200350);
orderInput.getContentPane();
setLayout(新的BorderLayout());
orderInput.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel txtFldPanel=新的JPanel();
orderIn=新的JTextField(10);
pricin=新的JTextField(5);
txtFldPanel.add(orderIn);
txtFldPanel.add(价格单位);
JPanel btnPanel=新的JPanel();
JButton addBtn=新JButton(“添加”);
btnPanel.add(addBtn);
addBtn.addActionListener(新按钮Listener());
addBtn.setActionCommand(“添加”);
JButton fnshBtn=新JButton(“完成”);
btnPanel.add(fnshBtn);
addBtn.addActionListener(新按钮Listener());
fnshBtn.setActionCommand(“fnsh”);
size=orderList.size();
Container cont=orderInput.getContentPane();
继续添加(txtFldPanel,BorderLayout.NORTH);
继续添加(btnPanel,BorderLayout.SOUTH);
orderInput.pack();
}
私有类ButtonListener实现ActionListener
{
已执行的公共无效操作(操作事件e)
{
字符串actionEnter=e.getActionCommand();
if(actionEnter.equals(“add”))
{
add(orderIn.getText());
add(Double.parseDouble(priceIn.getText());
orderIn.setText(“”);
价格单位:setText(“”);
}
else if(actionEnter.equals(“fnsh”))
{
dispose();
}
}
}
公共JFrame getFrame()
{
返回订单输入;
}
公共数组列表getOrd()
{
返回订单列表;
}
公共阵列列表getPri()
{
返回价格表;
}
公共int getSize()
{
返回大小;
}
}
当我按下ADD按钮时,它会显示NumberFormatException。为什么会这样?我可以从main中添加其余的代码,但是为什么它不保存在ArrayList中呢

这就是错误: java.lang.NumberFormatException:用于输入字符串:“” 位于java.lang.NumberFormatException.forInputString(未知源) 位于java.lang.Integer.parseInt(未知源) 位于java.lang.Integer.parseInt(未知源) 在com.howtodoinjava.demo.poi.SetMenu0$ButtonListener.actionPerformed上(SetMenu0.java:84) 在javax.swing.AbstractButton.fireActionPerformed(未知源) 位于javax.swing.AbstractButton$Handler.actionPerformed(未知源) 在javax.swing.DefaultButtonModel.fireActionPerformed(未知源) 位于javax.swing.DefaultButtonModel.setPressed(未知源) 位于javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知源代码) 位于java.awt.Component.ProcessMouseeEvent(未知源) 位于javax.swing.JComponent.ProcessMouseeEvent(未知源) 位于java.awt.Component.processEvent(未知源) 位于java.awt.Container.processEvent(未知源) 位于java.awt.Component.dispatchEventImpl(未知源) 位于java.awt.Container.dispatchEventImpl(未知源) 位于java.awt.Component.dispatchEvent(未知源) 位于java.awt.LightweightDispatcher.RetargetMouseeEvent(未知源) 位于java.awt.LightweightDispatcher.ProcessMouseeEvent(未知源) 位于java.awt.LightweightDispatcher.dispatchEvent(未知源) 位于java.awt.Container.dispatchEventImpl(未知源) 位于java.awt.Window.dispatchEventImpl(未知源) 位于java.awt.Component.dispatchEvent(未知源) 位于java.awt.EventQueue.dispatchEventImpl(未知源) 位于java.awt.EventQueue.access$400(未知源) 在java.awt.EventQueue$3.run处(未知源) 在java.awt.EventQueue$3.run处(未知源) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源) 在java.awt.EventQueue$4.run处(未知源) 在java.awt.EventQueue$4.run处(未知源) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(未知源) 位于java.awt.EventQueue.dispatchEvent(未知源) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源) 位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源) 位于java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源) 位于java.awt.EventDispatchThread.pumpEvents(未知源) 位于java.awt.EventDispatchThread.pumpEvents(未知源)
在java.awt.EventDispatchThread.run(未知源代码)

中,可能是由于这一行:

priceList.add(Double.parseDouble(priceIn.getText()));
在尝试解析文本之前,您需要确保priceIn文本字段包含一个数字。

您必须使用(在“添加”按钮上单击)


这段代码检查JTextFiels中是否有内容

我确实输入了一个数字。25每次都准确地说,在这种情况下,你能添加一些你得到的异常的详细信息吗?异常应该告诉你是哪一行导致了问题。对不起,我只知道这些,它没有。只需将我带到一个显示java异常断点的窗口,您的问题就在这里com.howtodoinjava.demo.poi.SetMenu0$ButtonListener.actionPerformed(SetMenu0.java:84您正在尝试解析空字符串是的,谢谢。我通过将int改为out来修复i
if(!(priceIn.isEmpty || orderIn.isEmpty)){
     //Do your adding
}