【问题标题】:I have difficulty in removing the selected item in my Inventory GUI我在删除我的 Inventory GUI 中的选定项目时遇到了困难
【发布时间】:2014-04-15 09:27:55
【问题描述】:

我有一个单独的 Items 类和一个用于 GUI 的 Inventory_MP 类。我这里的任务是删除用户输入的 Item 并让它在界面中显示它已被删除。由于某种原因,我无法删除它。错误说:

线程“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();   


                }

【问题讨论】:

  • 以后,请只包含出错的代码
  • 对不起>//

标签: java user-interface jscrollpane


【解决方案1】:

Integer.parseInt 调用发生错误,这是因为输入字符串“2”前面的前导空格。

String delqty = qtyField.getText();

qtyField.getText(); 正在返回带有前导空格的字符串。如果您删除 qtyField 中的空格,它将修复此错误,您的代码中可能仍然存在其他错误,但对 Integer.parseInt 的调用将正常工作。

【讨论】:

  • 你好。我需要将数量设为 int,因为不幸的是,我将用另一种方法计算它。 :(
  • 我知道,您正在使用 Integer.parseInt 函数正确地将 String 转换为 int,但是此函数不适用于包含前导空格的 String。尝试这样做以消除前导空格...String delqty = (qtyField.getText()).substring(1);
  • 非常感谢!我这样做了,但我收到一条错误消息,说 StringIndexOutOfBoundsException: String index out of range: -1 :(
【解决方案2】:

正如 ekcrisp 所说,错误是由于 delqty 包含 ' ',因此无法解析为 int

你可以对delqty做一些预处理。例如delqty = delqty.replace(' ', '') 应该在你的情况下解决问题,但是我想qtyFieldJTextField 所以用户可以写任何东西。您将需要对delqty 或聪明的用户进行大量预处理 =)

另一个解决方案应该是使用好的 Swing 组件,JSliderJSpinner 可能更合适。

【讨论】:

  • 对不起。我是新来的。 :( 我应该把delqty = delqty.replace(' ', '');String delqty = (qtyField.getText()).substring(1); 放在哪里?我很抱歉成为一个菜鸟抽泣:c
  • 别抱歉,我们都是菜鸟,每天都在学习 :) 您必须在 String delqty = qtyField.getText(); 和第一条 Integer.parseInt(delqty) 之间放置一条(而不是两条)线。跨度>
  • 非常感谢。 :) 我这样做了,我收到一条错误消息说 StringIndexOutOfBoundsException: String index out of range: -1 :(
  • 此错误来自substring(1)... 仅使用delqty = delqty.replace(' ', '')
  • 我也这样做了 :( 但是还有另一个错误 (darrrrnnnn T^T) 说“空字符文字和未闭合字符文字”
猜你喜欢
  • 1970-01-01
  • 2012-10-31
  • 2021-08-19
  • 1970-01-01
  • 2012-07-15
  • 2021-11-05
  • 2019-08-09
  • 2019-09-12
  • 1970-01-01
相关资源
最近更新 更多