2014-11-18 3 views
0

Я довольно новичок в java, и я пытаюсь создать систему записей учащихся. На данный момент я храню свой «зарегистрированный студент» в ArrayList от Object.Изменение значения переменной внутри объекта (java)

Я хотел был бы иметь возможность изменить значение для, например. первое имя конкретного ученика. Идентификатор студента также является его позицией в ArrayList.

Вот как я пытался это сделать, но это не похоже на работу:

StudentStoring.StudentList.get(id) 
    .setTitle(comboTitle.getSelectedItem().toString()); 

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

Спасибо.

+1

IndexOutOfBound означает, что 'id' находится за пределами длины массива. Имейте в виду, что первый индекс равен 0 (не 1). – Thilo

ответ

1

В документации сказано,

/** 
* Returns the element at the specified position in this list. 
* 
* @param index index of the element to return 
* @return the element at the specified position in this list 
* @throws IndexOutOfBoundsException {@inheritDoc} 
*/ 
public E get(int index) { 
    rangeCheck(index); 

    return elementData(index); 
} 

что означает, если список содержит 5 элементов (индекс 0 до 4). Если вы пытаетесь получить 10-й элемент (индекс 9), тогда он будет генерировать исключение IndexOutOfBoundsException. Так что в вашем коде,

StudentStoring.StudentList.get(id).setTitle(comboTitle.getSelectedItem().toString());

идентификатор будет иметь значение больше, чем размер списка массива. Попробуйте отладить в IDE или просто распечатать значение id, с которым вы легко можете найти проблему.

1

Лучший способ, чтобы получить значение индекса списка, который вы хотите обновить затем использовать метод public E set(int index, E element) заменить значение,

Student s=new Student(); 
s.setId(id); 
s.setTitle(comboTitle.getSelectedItem().toString()); 


StudentStoring.StudentList.set(index,comboTitle.getSelectedItem().toString()); 
+0

Это не обязательно лучше, так как он не обновляет существующий Студент, но заменяет его новым. Любой, у кого есть ссылка на объект, не увидит обновления. – Thilo

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