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

同じ文字列を 2 回分割していますが、文字列は不変であるため、元の文字列は同じままで、2 つの異なる配列が返されます。したがって、次のような入力がある場合:

1#3 2#4

で分割すると、次のように(" ")なります。

1#3
2#4

後でこの行で整数として解析しようとするもの:

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

それは NumberFormatException をスローしています。("#")ソース文字列ではなく、個々の配列要素を で再分割する必要があります。

于 2013-08-09T21:22:16.577 に答える