程序可以编译,但出现以下错误:
Two
One
Three
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at testingN.printArray(testingN.java:19)
at 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];
}
}
最佳答案
这是因为 for
的方式循环有效。
for (*initialization*; *some boolean condition*; *action to perform each loop*) {
//...
}
for 循环的工作原理如下:
- 它首先运行初始化部分中的代码。在你的情况下,它设置
i = 0
- 它运行循环的内容
- 它执行操作。在你的情况下
i++
. - 它检查 boolean 条件。如果为真,则转到步骤 2。否则,退出循环。在你的情况下,条件是
i < data.length
.
由于第 3 步发生在检查条件之前,因此您的 i
值将比数组大小 -1 大 1。也就是说,它将是比数组的最后一个索引大一的索引。所以return data[i];
给你一个越界异常。
关于java - 我在从方法返回数组时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19642328/