Java 为什么不是';这不管用吗?字符串值赢得';不要改变。递归

Java 为什么不是';这不管用吗?字符串值赢得';不要改变。递归,java,recursion,Java,Recursion,请帮助我,我不明白为什么s=h;部分不起作用。从这里忽略它会让我发布更多的细节和idk该说什么,所以我只想漫无目的地说,直到它起作用为止。谢谢你的帮助。当你调用reverse(s)在main中,您没有将结果分配给任何对象。因为您没有使用方法反向的结果;为什么返回未使用的字符串?您需要对代码进行两次更改 将静态字符串h初始化为: public class ggg { static int y=0; static int x; static String h; public static void

请帮助我,我不明白为什么s=h;部分不起作用。从这里忽略它会让我发布更多的细节和idk该说什么,所以我只想漫无目的地说,直到它起作用为止。谢谢你的帮助。

当你调用
reverse(s)
main
中,您没有将结果分配给任何对象。

因为您没有使用方法反向的结果;为什么返回未使用的字符串?

您需要对代码进行两次更改

  • 将静态字符串h初始化为:

    public class ggg
    {
    static int y=0;
    static int x;
    
    static String h;
    public static void main(String [] args)
    {
    
        String s = "hadoyef";
        x = s.length();
        System.out.println(s);
        reverse(s);
        System.out.println(s);
    }
    
    public static String reverse(String s){
    
        if (s.length() == 1){
            //System.out.print(s);
            h = h + s.substring(0,1);
            s=h;
            System.out.println(s);
            return s;
        }
        else{
            h = h + s.substring(s.length()-1,s.length());
            return reverse (s.substring(0, s.length()-1));  
    
            //System.out.print(s.substring(0,1));
    
        }
    }
    }
    
  • 将main方法中的返回值用作:

    static String h = "";
    

  • 定义“不工作”。阅读它的作业,我必须返回我发送给它的字符串。@frank,你主要只调用一次reverse。您需要打印从它返回的值,而不是再次打印
    s
    。@这是一个范围问题。您在反向方法中说的是
    s=h
    ,它被限制在方法中收集的
    字符串s
    变量中。这不会对main中的
    字符串产生任何影响。要查看效果,请使用
    System.out.println(反向)在您的主要方法中。非常感谢您向我解释这一点,smit
    
    s = reverse(s);