打印ArrayList的元素

时间:2018-11-22 14:44:59

标签: java

import java.util.*;

public class Prog1 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        System.out.println("Enter the value:");
        Integer v = in.nextInt();

        System.out.println("Enter number of elements:");
        int n = in.nextInt();

        ArrayList<Integer> a = new ArrayList(Prog1.duplica(v, n));

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

    public static ArrayList<Integer> duplica(Integer v, int n) {
        ArrayList<Integer> a = new ArrayList();

        for(int i = 0; i < n; i++) {
            a.set(i, v);
        }

        return a;
    }

}

此方法应要求一个整数值和arraylist中共同包含的元素数,然后应打印它们。例如,如果用户插入“ 5”和“ 4”,则应打印“ 5 5 5 5”。该程序会询问用户两个数字,但会出现此错误:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
    at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
    at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
    at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
    at java.base/java.util.Objects.checkIndex(Objects.java:372)
    at java.base/java.util.ArrayList.set(ArrayList.java:472)
    at Prog1.duplica(Prog1.java:20)
    at Prog1.main(Prog1.java:11)

1 个答案:

答案 0 :(得分:2)

您正在尝试使用set方法将项​​目添加到空列表。 set应该替换指定索引处的现有值。由于您的列表为空,因此没有可替换的值,导致尝试访问第一个元素时出现IndexOutOfBoundsException

改为使用add

for(int i=0; i<n; i++) {
  a.add(v);
}