运行时错误Java

时间:2013-05-19 19:01:06

标签: java string arraylist runtime-error println

我是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)只要列表具有偶数长度

,就会发生运行时错误

3 个答案:

答案 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中的元素不在列表中。

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