2

该程序编译但它给出了以下错误:

线程“主”java.lang.ArrayIndexOutOfBoundsException 中的二


异常: testingN.printArray(testingN.java:19) 中的 3
testingN.main
(testingN.java:10)

我对 Java (和编程)真的很陌生,我坚持这一点。

public class testingN 
{
    public static void main(String[] args) 
    {
        String[] names = new String[3];
        names[0] = "Two";
        names[1] = "One";
        names[2] = "Three";
        printArray(names);
    }
    public static String printArray(String[] data) 
    {
        int i;
        for (i = 0; i < data.length; i++) 
        {
          System.out.println(data[i]);
        }
        return data[i];
    }
}
4

2 回答 2

2

这是因为for循环的工作方式。

for (*initialization*; *some boolean condition*; *action to perform each loop*) {
    //...
}

for 循环的工作原理如下:

  1. 它首先运行初始化部分中的代码。在你的情况下,它设置i = 0
  2. 它运行循环的内容
  3. 它执行动作。在你的情况下i++
  4. 它检查布尔条件。如果为真,则进入步骤 2。否则退出循环。在你的情况下,条件是i < data.length

由于步骤 3 在检查条件之前发生,因此您的i值将比数组大小 -1 大 1。也就是说,它将是比数组的最后一个索引大一号的索引。所以return data[i];给你一个越界异常。

于 2013-10-28T18:33:05.243 回答
0
public class testingN 
{
    public static void main(String[] args) 
    {
        String[] names = new String[3];
        names[0] = "Two";
        names[1] = "One";
        names[2] = "Three";
        printArray(names);
    }
    public static void printArray(String[] data) 
    {
        for (int i = 0; i < data.length; i++) 
        {
          System.out.println(data[i]);
        }
    }
}
于 2013-10-28T18:56:32.513 回答