0

我是 Java 的初学者,我有一个运行时错误问题。我已经正确回答了,但是我不完全理解答案背后的概念。有人可以解释为什么 B 是问题的正确答案,谢谢:

考虑以下声明:

private ArrayList<String> list;
...
public void printAll()
{
int index = 0;
while (index < list.size) {
index = index + 1;
System.out.println(list.get(index));
   }
}

假设该列表不为空,关于 printAll() 的调用,下列哪一项是正确的?

a) 仅当列表为空时才会发生运行时错误。

b) 仅当列表不为空时才会发生运行时错误。

c) 永远不会发生运行时错误。

d) 总是发生运行时错误。

e) 只要列表长度为偶数,就会发生运行时错误

4

3 回答 3

0
while (index < list.size) {
 index = index + 1;
 System.out.println(list.get(index));
}

这是在访问列表之前index递增的。所以它每次都提前读取一个元素。所以当列表不为空时会出现运行时错误。

如果列表为空,则条件while (index < list.size)将失败,因此导致运行时错误的循环代码将永远不会被执行。

虽然与您的问题无关,但正确的代码是index在阅读后增加:

while (index < list.size) {
 System.out.println(list.get(index));
 index = index + 1;
}
于 2013-05-19T19:13:00.403 回答
0

考虑列表有 10 个项目,然后索引是 0 - 9

现在当 index=9

while 循环检查 9<10 是否为真并输入然后加 1

索引变为 10,发生越界错误

于 2013-05-19T19:07:42.573 回答
0
while (index < list.size) {
 index = index + 1;
 System.out.println(list.get(index));
}

情况1

: 如果 list 为空,while 循环的内容将永远不会被执行。

案例2

:如果列表不为空,访问最后一个元素会出错。因为 at 的元素list.size不在列表中。

因此,仅当列表包含至少一个元素时才会发生该错误。

于 2017-08-17T11:26:07.593 回答