有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

字符串运行时错误

我是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) 个答案

  1. # 1 楼答案

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

    case 1

    :如果列表为空,则永远不会执行while循环的内容

    case 2

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

    所以,只有当列表至少包含一个元素时,才会发生该错误

  2. # 2 楼答案

    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;
    }
    
  3. # 3 楼答案

    考虑列表有10项, 然后指数为0-9

    现在当指数=9

    同时循环检查9<;10为真,输入后加1

    索引变为10,出现越界错误