2013-05-19 68 views
0

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

考虑以下声明:

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)总是发生运行时错误。 9

现在当索引= 9

而 -

E)每当列表具有偶数长度

回答

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; 
} 
+0

很有意义..所以如果列表是空的并且没有添加任何内容,那么它将会是好的,尽管这完全没有意义。因此,在方法体动作之后必须出现增量 – user2240664

0

考虑列表具有10个项目, 然后指标为0时,会发生运行时错误循环检查9 < 10,它是真实的,在进入再加入1

指数成为10,它结合了错误的发生

+0

是的我明白,但为什么运行时错误发生如果列表不是空的,因此B? – user2240664

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

情况1

:如果列表是空的,内容while循环永远不会被执行。

壳体2

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

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