Arraylist中的Java IndexOutOfBoundsException

时间:2018-06-24 16:12:22

标签: arraylist indexoutofboundsexception

下面是我编写的代码:

    import static java.lang.System.out;
    import java.util.Scanner;
    import java.util.ArrayList;
    class Uni{
        static public void main(String...args){
            Scanner sc = new Scanner(System.in);
            ArrayList<Integer>list = new ArrayList<Integer>();
            for(int a=0,i=0;list.get(i)!=42;i++){    
                  a=sc.nextInt();
                  list.add(i,a);
            }
            for(int i=0;i<list.size();i++){
                out.println(list.get(i));
            }
        }
    }

这是我得到的错误:

  

执行失败。       java.lang.IndexOutOfBoundsException:索引:0,大小:0

Stack Trace:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at Uni.main(Uni.java:8)

您能帮忙做什么吗?

1 个答案:

答案 0 :(得分:1)

也许您想使用一段时间?初始化列表要容易得多。 此外,您的代码正在检查list.get(i)是否不等于42,但是您不能这样做,因为索引为0的列表仍然为空。

解决方案可能是:

import static java.lang.System.out;
import java.util.Scanner;
import java.util.ArrayList;
class Uni{
    static public void main(String...args){
        Scanner sc = new Scanner(System.in);
        ArrayList<Integer>list = new ArrayList<Integer>();
        int i = 0;
        while(i!=42) {
            list.add(i++,sc.nextInt());
        }
        for(int i=0;i<list.size();i++)
        {
            out.println(list.get(i));
        }
    }
}

编辑:在输入为42后停止:

import static java.lang.System.out;
import java.util.Scanner;
import java.util.ArrayList;
class Uni{
    static public void main(String...args){
        Scanner sc = new Scanner(System.in);
        ArrayList<Integer>list = new ArrayList<Integer>();
        int i = 0
        while (true) {
            int in = sc.nextInt();
            if (in==42) break;
            list.add(i++,sc.nextInt())
         }

        for(int i=0;i<list.size();i++)
        {
            out.println(list.get(i));
        }
    }
}