字符串运行时错误
我是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)只要列表长度为偶数,就会出现运行时错误
# 1 楼答案
:如果列表为空,则永远不会执行while循环的内容
:如果列表不为空,访问最后一个元素将发生错误。因为
list.size
处的元素不在列表中所以,只有当列表至少包含一个元素时,才会发生该错误
# 2 楼答案
这里
index
在访问列表之前增加。所以它每次都在前面读一个元素。因此,当列表不为空时,会出现运行时错误如果列表为空,则条件
while (index < list.size)
将失败,因此导致运行时错误的循环代码将永远不会执行虽然与您的问题无关,但正确的代码是在阅读以下内容后增加
index
:# 3 楼答案
考虑列表有10项, 然后指数为0-9
现在当指数=9
同时循环检查9<;10为真,输入后加1
索引变为10,出现越界错误