Java 使用JFrame时出现NumberFormatException
代码应该获取订单及其价格,并将其保存在各自的ArrayList中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
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
}