2013-04-08 30 views
-5
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)); 

    } 
} 
} 

请帮我我不明白为什么s = h;部分不起作用。从这里忽略它使我发布更多的细节和idk说什么,所以我只是要漫步,直到它的作品感谢谁帮助。为什么不是这项工作?字符串值不会更改。递归

+5

定义 “不工作”。 – 2013-04-08 22:15:48

+0

阅读[是Java“传递引用”?](http://stackoverflow.com/questions/40480/is-java-pass-by-reference) – jlordo 2013-04-09 17:35:37

回答

5

当您在main中致电reverse(s);时,您并未将结果分配给任何东西。

+0

太模糊。 – frank 2013-04-08 22:47:47

+0

@frank你只能在主叫中反向一次。您需要打印从中返回的值,而不是再次打印“s”。 – 2013-04-08 22:49:31

+0

@frank它是一个范围问题。你在说反向方法中的's = h',它被限制在方法中收集到的'String s'变量中。这不会对主要的'String s'产生任何影响。在你的主要方法中使用'System.out.println(reverse(s));'来看效果。 – Smit 2013-04-08 22:51:32

1

因为您没有使用方法反转的结果;为什么当它不使用时返回字符串?

+0

它的功课,我必须返回我发送它的字符串。 – frank 2013-04-08 22:19:16

3

您的代码需要2次更改。在main方法

static String h = ""; 
  • 使用返回值:

    1. 静态初始化字符串H作为

      s = reverse(s); 
      
  • +0

    谢谢你队友! – frank 2013-04-08 22:46:27