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)
答案 0 :(得分:2)
您正在尝试使用set
方法将项目添加到空列表。 set
应该替换指定索引处的现有值。由于您的列表为空,因此没有可替换的值,导致尝试访问第一个元素时出现IndexOutOfBoundsException
。
改为使用add
:
for(int i=0; i<n; i++) {
a.add(v);
}