2013-12-16 3 views
1

Я относительно новичок в java, и я пытаюсь выполнить задание для школы. В моем задании я должен сделать программу GUI, которая делает 8-8 шаров с красным и черным цветом. Единственная проблема (до сих пор), которую я имею, это инициализация двумерного массива JPanels. Я получаю эту ошибку при использовании eclipse:Инициализация двухмерных матриц JPanel с использованием цикла for

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7 

Это не дает ошибку, пока я не попытаюсь запустить код. Он говорит, что ошибка происходит в теле этого цикл:

JPanel[][] panel = new JPanel[7][7]; 

for (int i = 0; i <= panel.length; i++){ 
panel[i][0] = new JPanel(); 
panel[i][1] = new JPanel(); 
panel[i][2] = new JPanel(); 
panel[i][3] = new JPanel(); 
panel[i][4] = new JPanel(); 
panel[i][5] = new JPanel(); 
panel[i][6] = new JPanel(); 
panel[i][7] = new JPanel(); 
} 

Это работает, если я не использует для цикла, но я действительно не хочу ставить в 64 различных заявлениях делать делать это. Я дважды проверил, и panel.length делает, давая значение 7 (это то, что я хотел) и не работал, даже когда я физически помещен в 7. У меня нет синтаксической ошибки, это мой код, но я все еще получаю Ошибка. Есть ли другой способ, которым я должен заниматься этим? Заранее спасибо. Помните, я новичок в этом.

+2

Изменение 'я <= panel.length' для' я PakkuDon

+0

Я новичок в этом, и я, вероятно, должен знать, что такое вложенный цикл, но я этого не делаю, и если я использую 'i retep686

ответ

1

Три вещи:

  1. checkboard составляет 8 × 8, так что вы действительно хотите panel.length быть 8, нет?
  2. Стандарт for цикл использует < для испытания, а не <=.
  3. Если вы используете две петли , вам не нужно повторять new JPanel() 8 раз.

Результат:

JPanel[][] panel = new JPanel[8][8]; 

for (int i = 0; i < panel.length; i++) { 
    for (int j = 0; j < panel[i].length; j++) { 
     panel[i][j] = new JPanel(); 
    } 
} 
+0

Спасибо! отлично работал. И я использовал вашу идею, чтобы закончить ее. – retep686

2

«сделать GUI программу, которая делает 8 на 8 красный и черный цвет шахматной доски Единственная проблема (до сих пор), что я имею в инициализации. двумерный массив JPanels "..

Если все, что вам нужно сделать, это сделать доску, без каких-либо других условий, то почему бы просто не использовать GridLayout

JPanel mainPanel = new JPanel(new GridLayout(8, 8)); 

for (int i = 0; i < 64; i++){ 
    JPanel panel = new JPanel(); 
    // alternate background colors with a predefined boolean and an if 
    mainPanel.add(panel); 
} 
Смежные вопросы