【问题标题】:ArrayIndexOutOfBoundsException error in recursive method递归方法中的 ArrayIndexOutOfBoundsException 错误
【发布时间】:2020-02-04 11:14:33
【问题描述】:

我正在尝试创建一个从用户那里获取 int t 和 String s 的程序。 String 将在空格处拆分并放入 String[] 字符串。当 t=1 时,主方法打印字符串,使用方法 reverse 中的递归反转其元素,该方法需要两个整数(末端的索引)和一个字符串数组,然后打印反转的字符串数组。下面的代码编译没有问题,但是当我按 Enter 输入 1 for t 时出现 ArrayIndexOutOfBounds 错误。错误引用了第 11 行和第 34 行,但我摸不着头脑,因为我看不到任何错误。

    import java.util.Scanner;
    public class Recursion
    {
        public static String[] reverse(int m, int n, String[] str)
        {
            String[] p = new String[str.length];
            if (m == n) return str;
            else if (m > n) return str;
            else
            {
                str[m] = p[n];
                str[n] = p[m];
                return reverse(m+1, n-1, str);
            }
        }

        public static void main(String[] args)
        {
            Scanner enter = new Scanner(System.in);

            System.out.print("t = ");
            int t = enter.nextInt();
            System.out.print("s = ");
            String str = enter.nextLine();

            String[] Strings = str.split(" ");
            int k = Strings.length;

            if (t == 1)
            {
                for (String s : Strings)
                    System.out.println(s);
                System.out.println("The reversal is");
                reverse(k-k, k, Strings);
                for (String s : Strings)
                    System.out.println(s);
            }
        }
    }

【问题讨论】:

  • 首先将reverse(k-k, k, Strings);改为reverse(0, Strings.length - 1, Strings);

标签: java arrays recursion


【解决方案1】:

java中的数组从0开始到长度-1

更多详情请参阅Arrays

所以传递 k 会抛出 ArrayIndexOutOfBounds 使用下面的代码

reverse(0, k-1, Strings);

【讨论】:

  • 谢谢。这个简单的错误现在让参加编程课程感到羞耻。 /s
  • @ColeBalajadia 不要这样,我们总是犯简单的错误:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多