0

它是一个小卖部计划!

public void sale() {
        if (!ingredients.isEmpty()) {
            printFood();
            String choice = JOptionPane.showInputDialog("Enter Your choices seperatad by a # to indicate quantity");
            String[] choices = choice.split(" ");
            String[] ammounts = choice.split("#");
            for (int i = 0; i < choices.length; i++) {
                int foodPos = (Integer.parseInt(choices[i])) - 1;
                int ammount = Integer.parseInt(ammounts[i+1]);
                try {
                    foods.get(foodPos).sale(ammount);
                } catch (IndexOutOfBoundsException e) {
                    System.out.println("Ingredient does not exsist");
                }
            }
        }


    }

http://paste.ubuntu.com/5967772/

给出错误

线程“主”java.lang.NumberFormatException 中的异常:对于输入字符串:java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 处的“1#3”在 java.lang.Integer.parseInt(Integer.java:492 ) 在 java.lang.Integer.parseInt(Integer.java:527)
4

1 回答 1

2

您将同一字符串拆分两次,但字符串是不可变的,因此您将返回两个不同的数组,而原始字符串保持不变。因此,如果您输入如下:

1#3 2#4

您将其拆分(" ")将产生:

1#3
2#4

您稍后在此行尝试将其解析为整数:

int foodPos = (Integer.parseInt(choices[i])) - 1;

那是抛出 NumberFormatException。您需要重新拆分每个单独的数组元素("#"),而不是源字符串。

于 2013-08-09T21:22:16.577 回答