2015-04-22 49 views
1
public class Problems { 
String a = "Tester"; 
public static String reverse(String s) 
{ 
    int m = s.length(); 

    if(m<=1) 
    { 
     return s; 
    } 
    else 
    { 
     m=m/2; 
     String r1=reverse(s.substring(0,m)); 
     String r2=reverse(s.substring(m)); 
     return (r2+r1); 
    } 
} 


reverse(a); 
System.out.println(a); 

}递归串反向语法错误

我现在有这样一个递归的字符串程序,但我正在逐渐插入“}”来完成身体。这可能是简单的,但我不知道为什么我的程序没有编译。我的程序中是否有其他错误?我非常感谢你的帮助,我希望我能够做到这一点!谢谢你们

+0

我敢打赌,你需要添加'}'来关闭一个你的循环或函数或类。这就是缩进如此重要的原因。此外,你有任何方法之外的两个语句,这意味着它不会编译 –

+0

请使用一个好的IDE。它会很快检测到这种类型的错误。 – Jayan

回答

0

这些线

reverse(a); 
System.out.println(a); 

是你的方法之外。这在Java中无效。只有声明可能发生在方法之外(在课堂上)。通过将直接位于其上方的}移至直接位于其下方的行来解决此问题。

0

这些行:

reverse(a); 
System.out.println(a); 

要么是在静态方法中,或者构造/初始化。 除此之外,你为什么不简单地使用new StringBuilder(s).reverse().toString()

1

你缺少一个main(假设目的是要运行它)

这里有所改变程序..

public class Problems { 

    public static String reverse(String s) { 
     int m = s.length(); 

     if (m <= 1) { 
      return s; 
     } else { 
      m = m/2; 
      String r1 = reverse(s.substring(0, m)); 
      String r2 = reverse(s.substring(m)); 
      return (r2 + r1); 
     } 
    } 

    public static void main(String[] args) { 
     String a = "Tester"; 
     String result=reverse(a); 

     System.out.println(a); 
     System.out.println(result); 
    } 
} 
+1

您可以将方法reverse()作为静态并跳过对象实例化。 – LhasaDad