2016-04-22 3 views
0

Мне нужна ваша помощь в изменении значения переменной boolean на основе доступных значений в списке. Я определил класс под названием Student:Как изменить значение переменной на основе доступных значений в списке

public class Student { 
    private Integer id;//Getter and Setter 
    private String name;//Getter and Setter 
    private String location;//Getter and Setter 
    private String remarks;//Getter and Setter 
    private boolean disable;//Getter and Setter 

    public Student(Integer id, String name, String location, String remarks, boolean disable){ 
        this.id = id; 
        this.name = name; 
        this.location = location; 
        this.remarks=remarks; 
        this.disable=disable; 
      } 

По умолчанию в компоненте, значение Disable верно. В программе у меня есть два списка: employeeList и selectedEmployees. employeeList имеет значение и selectedEmployees список имеет выбранные значения:

private List<Student> employeeList = new ArrayList<Student>(); 
private List<Student> selectedEmployees; 
private boolean disable; 

@PostConstruct 
public void init() { 
    //add Employees 
    disable=true; 
    Student w1 = new Student(111, "AAAA", "ZZZZ", "", disable); 
    Student w2 = new Student(222, "CCCCC", "ZZZZZ", "OUT", disable); 
    Student w3 = new Student(333, "BBBBBB", "YYYYYYY", "IN", disable); 

    employeeList.add(w1); 
    employeeList.add(w2); 
    employeeList.add(w3); 

} 

Однако, я имею метод, который называется EnableInputText, который будет вызван, чтобы проверить, если какое-либо из указанных выше значений в selectedEmployees списке, то он должен изменить значение переменной disable в false:

public void EnableInputText(SelectEvent event) { 


for(int i=0;i<=selectedEmployees.size();i++){ 
    for(int j=0;j<=employeeList.size();j++){   
    if(selectedEmployees.get(i).getId().equals(employeeList.get(j).getId())) 
    { 
     selectedEmployees.get(j).setDisable(false); 
     break; 
    } 
    } 
} 

} 

Но приведенный выше код, я получаю сообщение об ошибке:

java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 at java.util.ArrayList.RangeCheck(ArrayList.java:547) at java.util.ArrayList.get(ArrayList.java:322)

+3

Измените '<=' в '<' в условиях цикла. Если размер вашего списка равен «3», единственными правовыми индексами, которые вы можете получить, являются '0',' 1' и '2'. – azurefrog

+0

Если вы используете для каждого стиля циклы типа 'for (Student student: list)', у вас никогда не будет такой проблемы. – Radiodef

+0

@azurefrog Да Вы правы – 99maas

ответ

0
selectedEmployees.get(j).setDisable(false); 

Я думаю, вы хотели использовать i вместо j для этой линии?

или на оборотной стороне, вероятно:

employeeList.get(j).setDisable(false); 
+0

По-прежнему такая же ошибка – 99maas

+0

Проверьте ответ в вопросе azurefrog. Это правильный ответ – karina

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