【问题标题】:Problem with recursion on java and Array of Stringsjava和字符串数组的递归问题
【发布时间】:2021-09-01 12:30:35
【问题描述】:

我需要为我的学习解决这个练习。 答:在 Java 上编写一个递归方法,输入一个字符串数组 [][] "a",输出一个字符串数组 [][] "b",其中每个元素 b[i][j] 是一个连接a 的两个元素作为 a[i][j].concat(a[i][j+1]).

我的代码:

public static String [][] concatena (String [][] a) {
    String [][] b = new String [a.length][];
        return concatena(a,b,0,0);
    }

public static String [][] concatena (String [][] a,String [][] b, int i, int j) {
    if (i == a.length)
        return b;

    if (j == 0)
    b[i] = new String [a[i].length-1];
    
    if (j > 0 )
        b[i][j] = a[i][j].concat(a[i][j+1]);
            return concatena(a,b,i,j+1);
            
    if (j == a[i].length-1) 
        return concatena(a,b,i+1,0);
            b[i][j] = a[i][j].concat(a[i][j+1]);
                return concatena(a,b,i,j+1);
 
 
}

public static void main(String[] args) {
    String [][] a = {{"aa","cde","run","kdef"},{"stk","beta"},{"rho","p","alfa"}};
    b = concatena(a);
    System.out.println(b);
}
   

}

【问题讨论】:

  • 您的问题是什么?我只看到了一个目标和一些代码,没有详细说明您的问题是什么以及您遇到了什么问题。
  • 尝试运行我的代码时什么都没有。我认为我的代码运行不正确,因为没有创建元素 b[i][j]。

标签: java arrays string recursion


【解决方案1】:

变量b没有在main方法中声明,所以需要在main方法中初始化b

【讨论】:

    【解决方案2】:

    问题来了

    public static void main(String[] args) {
        String [][] a = {{"aa","cde","run","kdef"},{"stk","beta"},{"rho","p","alfa"}};
        b = concatena(a); <---------
        System.out.println(b);
    }
    

    没有使用此名称初始化的变量,所以我想知道它是否可以编译。

    你需要初始化或至少告诉程序哪个类型将是这个“b”变量

    String [][] b = new String [a.length][]
    

    所以你的main 方法应该是这样的:

    public static void main(String[] args) {
        String [][] a = {{"aa","cde","run","kdef"},{"stk","beta"},{"rho","p","alfa"}};
        String [][] b = concatena(a);
        System.out.println(b);
    }
    

    但是即使你修复了这个问题,你的编译器也会报错,因为这部分代码是无法访问的语句。

    if (j == a[i].length-1) 
            return concatena(a,b,i+1,0);
                b[i][j] = a[i][j].concat(a[i][j+1]);
                    return concatena(a,b,i,j+1);
    

    【讨论】:

      猜你喜欢
      • 2020-07-30
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多