我有一个单独的Items类和一个Inventory_MP类用于GUI。我在这里的任务是删除用户键入的项,并让它在界面中显示它已被删除。由于某种原因,我无法删除它。错误显示:
线程"AWT-EventQueue-0"java.lang.NumberFormatException中的异常:对于输入字符串:"2"在java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)位于java.lang.Integer.parseInt(Integer.java:481)在java.lang.Integer.parseInt(Integer.java:527)
if(e.getSource() == remButton){
String delitem = nameField.getText();
String delnum = numField.getText();
String delqty = qtyField.getText();
String delprice = priceField.getText();
Items v = new Items(delitem, delnum, Integer.parseInt(delqty), Double.parseDouble(delprice));
removeItems(delitem, delnum, delqty,delprice);
public void removeItems(String delitem, String delnum, String delqty, String delprice){
Items v = new Items();
itemModel.removeElementAt(itemCollection.indexOf(delitem)); //removes element in the JList
itemnumModel.removeElementAt(itemCollection.indexOf(delnum));
qtyModel.removeElementAt(itemCollection.indexOf(delqty));
priceModel.removeElementAt(itemCollection.indexOf(delprice));
itemCollection.remove(searchItems(delitem)); //removes element in the arrayList
itemText.setText(" ");
numText.setText(" ");
qtyText.setText(" ");
priceText.setText(" ");
window.validate();
window.repaint();
}
在Integer.parseInt调用中出现错误,这是因为输入字符串"2"前面有前导空格。
String delqty = qtyField.getText();
qtyField.getText();
正在返回带有前导空格的字符串。如果删除qtyField中的空格,它将修复此错误,代码中可能还有其他错误,但对Integer.parseInt的调用将正常工作。
正如ekcrisp所说,错误是由包含' '
的delqty
引起的,因此无法解析为int
。
您可以对delqty
进行一些预处理。例如,在您的情况下,delqty = delqty.replace(' ', '')
应该起作用,但我认为qtyField
是JTextField
,因此用户可以编写任何内容。你需要在delqty
上进行大量的预处理,或者智能用户=)
另一个解决方案应该是使用好的Swing组件,JSlider
或JSpinner
可能更合适。