【发布时间】: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);