IndexOutOfBoundsException问题

时间:2014-11-06 20:49:50

标签: arraylist

所以,我正在编写一个代码来查找输入数字中增长最长的子序列。

    int curr_len = 0, max_len = 0, start = 0;

    for (int i = 1; i <= listN.size(); i++){
        if (listN.get(i-1) < listN.get(i)){
            curr_len++;
            if (curr_len >= max_len){
                max_len = curr_len;
                start = i - max_len + 1;
            }
        } else {
            curr_len = 1;
        }
    }

    for (int i = 0; i < max_len; i++)
        listAsc.add(start+i);

问题是我在代码片段中得到了IndexOutOfBoundsException

    if (listN.get(i-1) < listN.get(i))

任何人都可以帮忙如何正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

使用

for (int i = 1; i < listN.size(); i++){

因为索引从0开始。使用索引&lt; 0或&gt; = listN.size()会在get(i)中生成IndexOutOfBoundsException

请参阅:http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#get%28int%29