2015-04-22 51 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