import java.io. *;CoinChangeProblemコードの例外
public class CoinChangeProblem {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
int[] arr;
arr = new int[]{1, 2, 5, 10, 20, 50, 100, 500, 1000};
int[] arr2;
arr2 = new int[]{-1, -1, -1, -1, -1, -1, -1, -1, -1};
int max_coin = 0, due, i = 0, j = 0;
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
System.out.print("\n\n\tEnter the amount of currency due");
due = Integer.parseInt(stdin.readLine());
while (due != 0) {
for (j = 0; due > arr[j] && j < 9;)
max_coin = arr[j++];
j = 0;
arr2[i] = max_coin;
due = due - max_coin;
i += 1;
}
i = 0;
for (int k = 0; arr2[k] != -1; k++) {
System.out.print(" " + arr2[k]);
}
}
}
コンパイラはあなたが助けてくださいソリューションを持っている9行目では、ArrayIndexOutOfBoundsExceptionをスローし、23.Ifされます!ループはarr2[i] = max_coin
アクセスarr2[9]
になりますが、
for(j=0; j<9 && due>arr[j];)
max_coin=arr[j++];
Javaは短絡で動作するよう、あなたの配列の最後のインデックスが8
ええ、私は8つまでのインデックスを拘束する条件を追加しました。ロジックには穴がありますが、うまくいけばうまくいきます。☺ – learner