我正在编写一个程序来显示前100个整数ArrayList。它符合但没有运行。谁能告诉我哪里出错了。我试图添加前100个整数,然后显示它们,但我再次得到一个空白页面。这就是我所做的。
ArrayList<Integer> numbers = new ArrayList<Integer>(100);
for (Integer i : numbers)
{
numbers.add(i);
System.out.println(numbers.get(i));
}
答案 0 :(得分:4)
100
构造函数中的ArrayList
参数指定列表的初始容量。这并不意味着元素的实际数量为100
。请参阅ArrayList
constructor:
构造具有指定初始容量的空列表
由于您的列表为空,因此for (Integer i : numbers)
循环将执行零次。您需要循环如下:
ArrayList<Integer> numbers = new ArrayList<Integer>(100);
for (int i = 1; i <= 100; i++)
{
numbers.add(i);
System.out.println(numbers.get(i - 1));
}
ArrayList.get(i)
获取索引i
处的元素。由于索引从零开始,循环体中的最后一个语句应为numbers.get(i - 1)
。
如果数字应从零开始(0
到99
),那么循环将如下:
for (int i = 0; i < 100; i++)
{
numbers.add(i);
System.out.println(numbers.get(i));
}
答案 1 :(得分:1)
for (Integer i : numbers)
是enhanced-for statement。它有效地迭代numbers
中包含的每个条目,i
为该迭代引用,并允许您执行与i
相关的操作。
由于numbers
为空,因此循环不会运行。
此外,new ArrayList<>(100)
会将数组列表的初始容量设置为100;如果您知道不希望每次达到限制时增加数组列表的成本,这将非常有用。它不将任何值填充到数组列表中。
您真正需要做的就是将enhanced-for更改为正常for
:
for(int i = 0; i < 100; i++) {
numbers.add(i);
}
答案 2 :(得分:0)
您正在循环一个空列表。您需要更改代码以向此ArrayList添加值,然后将其打印出来:
int initialSize = 100;
ArrayList<Integer> numbers = new ArrayList<Integer>(initialSize);
for (int i = 0; i < initialSize; i++)
{
numbers.add(i);
System.out.println(numbers.get(i));
}