2015-03-04 4 views
1

Я использую Java Swing, и я хочу изменить переменную на каждом выборе переключателя. Я новичок в Java, и я не совсем уверен, где я скользя здесь ...Обновление переменной java в цикле for на основе итерации

String[] test = {"red","blue","green","yellow"}; 

    for(final int i=0; i < test.length; i++) 
    { 
     RadioItem = new JRadioButtonMenuItem(test[i]); 
     RadioItem.addActionListener(new ActionListener() 
      { 
       public void actionPerformed(ActionEvent e) 
       { 
        settingSelection = test[i]; 
        JOptionPane.showMessageDialog(null,test[i]); 
       }; 
      }); 
     settings.add(RadioItem); 
     mnSettings.add(RadioItem); 
    } 

Ошибки я получаю:

The final local variable i cannot be assigned. it must be blank and not using a compound assignment.

Может кто-нибудь помочь?

ответ

0

Удалить окончательное ключевое слово из цикла:

for(int i=0; i < test.length; i++) 
1

Это жалуется линии:

for(final int i=0; i < test.length; i++) 

Здесь в течение цикла, вы определили Я как окончательные, а затем вы изменяете значение i также (работа для цикла). Поэтому измените его на:

for(int i=0; i < test.length; i++) 

Заключительное поле или объект, назначенные один раз, не могут быть повторно назначены другому значению.

+0

Я понимаю, что окончательный способ навсегда присвоить значение, но удаление «окончательный «выдает ошибки в строке 10 и 11 с ошибкой:> Нельзя ссылаться на не конечную переменную i внутри внутреннего класса, определенного другим способом – penfold1992

0

Вы можете объявить переменную внутри для цикла for(int i = 0; i < 10; i++)

, что вы сделали это объявить окончательную переменную внутри для цикла. Это невозможно. Заключительные переменный не может быть изменены, его значение устанавливается и ничто не может изменить его

Выньте final и просто иметь свой цикл как for(int i = 0; i < test.length; i++)

+0

Я понимаю, что окончательный вариант - это возможность постоянно назначать значение, но удалять« окончательный », вызывает ошибки в строке 10 и 11 с ошибкой: > Нельзя ссылаться на переменную не конечного значения i внутри внутреннего класса, определенного другим способом – penfold1992

+0

То, что я буду неуверенный – Dan

Смежные вопросы