java - 我在从方法返回数组时遇到问题

标签 java arrays methods

程序可以编译,但出现以下错误:

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 循环的工作原理如下:

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

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

关于java - 我在从方法返回数组时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19642328/

相关文章:

java - Android Studio 没有从 Firebase 实时数据库中读取检索到的数据

java - Gradle 使用源中的类作为打包阶段的一部分

javascript - 如何在 Javascript 中获取重复数组的最后一次出现位置

java - 在java中设置和获取方法?

java - 方法调用两次 GWT

java - 返回所有满足条件的字符串值

java - 如果使用两次,@XmlVariableNode 将忽略第二个属性

javascript - 使用 next() 使用迭代器对象迭代两个 JavaScript 数组

c - 将整数的每个数字提取到数组中?

c++ - 如何使用公共(public)函数访问私有(private)变量?