我是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));
}
}
假设列表不为null,对于printAll()的调用,以下哪一项是正确的?
a)仅当列表为空时才会发生运行时错误。
b)仅当列表不为空时才会发生运行时错误。
c)永远不会发生运行时错误。
d)始终发生运行时错误。
e)只要列表具有偶数长度
,就会发生运行时错误答案 0 :(得分:0)
考虑清单有10个项目, 那么指数是0 - 9
现在当index = 9
时while循环检查它9&lt; 10这是真的并进入然后加1
索引变为10,发生了超出范围的错误
答案 1 :(得分: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;
}
答案 2 :(得分:0)
while (index < list.size) {
index = index + 1;
System.out.println(list.get(index));
}
案例1
:如果list为空,则永远不会执行while循环的内容。
案例2
:如果list不为空,则访问last元素将发生错误。因为list.size
中的元素不在列表中。
因此,仅当列表包含至少一个元素时才会发生该错误。