我对java很新,我正在尝试创建学生记录系统。
目前我正在ArrayList
Object
中存储我的“注册学生”。
我希望能够修改例如for的值。特定学生的名字。学生的身份证也是他在ArrayList
中的位置。
以下是我尝试这样做的方法,但似乎没有效果:
StudentStoring.StudentList.get(id)
.setTitle(comboTitle.getSelectedItem().toString());
这是一段代码,假设在修改页面中获取标题的新值并替换旧的,但我收到IndexOutOfBound
错误。
感谢。
答案 0 :(得分: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());
id的值大于数组列表的大小。尝试在IDE中调试或只打印id的值,您可以轻松找到问题。
答案 1 :(得分: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());