Mit edwards Code überarbeitet, ich dies jetzt haben:Arraylist Fehler Beteiligung außerhalb der Grenzen Ausnahme
int k, l, tempA, tempB;
for (k = 0; k < 13; k++) {
for (l = 0; l < 4; l++) {
tempA = rndm.get(k);
tempB = suit.get(l);
// increment # and convert into string
buttonNumber++;
buttonName = Integer.toString(buttonNumber);
// assign new button to the array
cardButton[k * 4 + l] = new JButton(buttonName);
// assign button image icon
cardButton[k * 4 + l].setIcon(cardImage[tempA][tempB]);
// assign value to the check variable
check[k * 4 + l] = Integer.toString(tempA+1);
// make button invisible for now
cardButton[k * 4 + l].setVisible(false);
// add the button to the board
board.add(cardButton[k * 4 + l]);
}
}
aber mein Problem dabei ist, dass ich einen Ersatz für die verschachtelte Schleife, weil die Art und Weise müssen Es ist jetzt eingerichtet, es zeigt X-Wert in 4 verschiedenen Farben an, bevor der nächste Wert angezeigt wird, wenn ich es brauche, um x-Wert und x-Farbe anzuzeigen, ohne einen Wert einmal zu wiederholen, es sei denn, es wird zufällig gemacht. Der Grund dafür liegt in der verschachtelten Schleife, die einmal durch k und dann viermal durchläuft.
Wenn 'l' 4 ist, was bedeutet' j <52 || k <13 || l <4' bewerten zu? – shmosel
"Aber mein Problem ist, dass ich vorher die Werte innerhalb des Arrays gesetzt habe." Sie denken eindeutig, dass Sie Werte im Array haben, aber Sie liegen falsch. Die ArrayList hat nicht nur entschieden, dass deine 4 Gegenstände wie alle anderen 5-9 statt 0-3 nummeriert sind. Hmmm. Index 4, wo die verfügbaren Werte sind 0, 1, 2, 3 ... – John3136
Beseitigen Sie jede Instanz von 'j'. Sie brauchen nichts davon, einschließlich der 'for-Schleife'. Ersetzen Sie dann jede Instanz von "j" durch "k * 4 + l", und platzieren Sie Ihren Code innerhalb der "l" -Schleife, wobei "tempA" und "tempB" definiert werden. Das sollte es beheben. –