В моей программе я использую список слоистых массивов для запоминания свойств кнопок (нажатие определенных кнопок является «правильным», а другие - «неправильным»), где внешний слой зависит от JPanel, на которой находятся кнопки, и внутреннего слояэто логические переменные, которые являются либо истиной, либо ложью.Количество кнопок случайное.В строке while (buttonInfo.get(buttonInfo.size() - 1).get(rightButton) == true) {
имеется исключение IndexOutOfBoundsException, поэтому я продолжаю застрять в этой строке, но подозреваю, что такая же проблема возникает в buttonInfo.get(buttonInfo.size() - 1).add(rightButton, true);
.
int numberOfButtons = rnd.nextInt(5) + 2;
buttonInfo.add(new ArrayList<Boolean>());
JPanel newPanel = new JPanel();
newPanel.setLayout(new GridLayout(2, 1, 5, 0));
JLabel panelMessage = new JLabel("Choose one.");
newPanel.add(panelMessage);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(1, 0, 0, 5));
for (int b = 0; b < numberOfButtons; b++) {
JButton newButton = new JButton(String.valueOf(b));
newButton.addActionListener(this);
buttonPanel.add(newButton);
}
for (int a = 0; a < (numberOfButtons/2); a++) {
int rightButton = rnd.nextInt(numberOfButtons);
while (buttonInfo.get(buttonInfo.size() - 1).get(rightButton) == true) {
rightButton = rnd.nextInt(numberOfButtons);
}
buttonInfo.get(buttonInfo.size() - 1).add(rightButton, true);
}
Как мне исправить оператор while, чтобы он былв пределах границ?