52枚のトランプを引くプログラムを実装しました。実行してみると次の画像のようなエラー(used[i][j-1]=java.lang.IndexOutOfBoundsException : Invalid array index: -1)が表示されたのでデバッグモードで変数の中身を見てみましたが、i=2, j=1となっておりj-1=0であるので範囲外になっているようには思えませんでした。どうしてこのようなエラーが表示されてしまうのでしょうか。もし分かりましたら解答をお願いします。
java
1public class Cards{ 2 public boolean[][] used = new boolean[4][13]; //カードが使用済みかどうかを判定するための配列 3 public int i; 4 public int j; 5 6 public void chooseCard(){ 7 8 i = new java.util.Random().nextInt(3); 9 j = new java.util.Random().nextInt(12) + 1; 10 11 while(used[i][j-1] == true){ 12 i = new java.util.Random().nextInt(3); 13 j = new java.util.Random().nextInt(12) + 1; 14 } 15 16 if(used[i][j-1] == false) 17 used[i][j-i] = true;//使用済みとする 18 } 19 20 public void makeMark(String[] x,int n, int y){//マークを配列に格納する 21 if(n == 0) 22 x[y] = "♥"; 23 else if(n == 1) 24 x[y]= "♦"; 25 else if(n == 2) 26 x[y] = "♣"; 27 else 28 x[y] = "♠"; 29 } 30 31} 32
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/09 13:21