问题涉及Java中ArrayList的索引

时间:2018-11-08 16:28:58

标签: java arrays

我正在创建一个模拟目录。单击按钮时将调用此方法,该方法应在屏幕上显示一个新的学生文件。除非我超出arraylist的范围,否则它会完美地工作。我知道这是一个超出范围的异常,但是我认为我使用if()语句来处理它。为了澄清起见,studentRecord是一个包含String数组的数组列表。这些字符串数组包含学生的姓名,分格,ID等。 这是我的代码:

public void previousStudent(View view){
    counter--;
    if(counter < 0){counter = studentRecords.size();}

    tvID.setText("Student ID: " + studentRecords.get(counter)[0]);
    tvName.setText("Student Name: "+ studentRecords.get(counter)[1] + " " + studentRecords.get(counter)[2]);
    tvDivision.setText("Division: " + studentRecords.get(counter)[3]);
    tvGender.setText("Student Gender: " + studentRecords.get(counter)[4]);
}

https://pastebin.com/K0sUr71R

1 个答案:

答案 0 :(得分:0)

List的大小不是可用的索引,因为对于List而言,Array的索引开始为0。
因此,只有studentRecords.size()-1可用作最后一个索引,例如。

counter = studentRecords.size() - 1;

要包装在第一个->最后一个之前的循环:请使用这种方式。
或者,您也可以在到达第0个索引的第一个元素时,禁用“上一个”按钮。