当前位置: 首页 > 知识库问答 >
问题:

输入系统,用户输入对象的数组位置,后跟一个数字,但它给我一个错误

沈飞舟
2023-03-14

这是一个塔克店的节目!

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/

给出错误

共有1个答案

尉迟国发
2023-03-14

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

1#3 2#4

使用(“”)拆分它将得到:

1#3
2#4

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

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

它引发NumberFormatException。您需要使用(“#”)而不是源字符串重新拆分每个单独的数组元素。

 类似资料: