2012-07-08 64 views
-1

我在這裏有一種向後顯示字符串的方法。使用子串向後顯示一個字符串

public static String ReverseStr(String backward) { 
     String newString = ""; 
     for (int i=0; i<backward.length(); i++) { 
      newString = backward.charAt(i) + newString; 
     } 
     return newString; 
} 

它可以正常工作,但我想這樣做的另一種方式,那就是用for循環,使用substring方法有兩個參數字符串中的每個字符獲得,從最後一個字符,然後會連接每次在循環中使用新字符串的單字符子字符串。

我嘗試這樣做:

public static String ReverseStr(String backward) { 
     String newString = ""; 
     for (int i=0; i>backward.length(); i--) { 
      String subChar = backward.substring(backward.length()-1); 
      newString += subChar; 
     } 
     return newString; 
} 

但是當我運行該程序,它會顯示什麼。請幫我修復代碼。非常感謝你!

+0

你爲什麼不使用的charAt? – 2012-07-08 08:48:29

+1

我認爲你爲自己的利益問太多問題。你需要學會爲自己弄清楚這些事情。除非你這樣做,否則你不會成爲有效的程序員。 – 2012-07-08 09:05:09

+0

我同意斯蒂芬。花幾個小時的時間查看標準軟件包的javadoc並嘗試一些東西不會浪費時間。 – 2012-07-08 09:24:25

回答

3

如果這不是一項功課,那麼請使用StringBuilder類和reverse()方法。

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuilder.html#reverse()

如果這是一門功課通過自己做。

+0

你好拉斐爾!我不知道有這樣的階級和方法。謝謝。我是Java新手,我想練習不同的風格。 – 2012-07-08 08:58:09

+0

嗨,當你正在學習Java時,我建議檢查Java類的源代碼。這是一個很好的學習目的。檢查位於安裝了Java的文件夾中的文件src.zip。解壓縮並研究標準java類的源代碼。 – 2012-07-08 09:00:04

2

的循環永遠不會執行由於錯誤的控制條件:

for (int i=0; i>backward.length(); i--) 

0開始,一直持續到i大於length(如length總是至少0這是不正確的)。你可能意味着:

for (int i=backward.length(); i>=0; i--) 

一旦你成功地解決您的代碼,可以考慮使用StringBuilder,而不是串聯到String。一旦你成功地使用StringBuilder,你會發現得心應手reverse()方法:

return new StringBuilder(backward).reverse().toString(); 
+0

謝謝Tomasz!你是對的,哈哈傻了。但是當我運行代碼時,例如我輸入「hello」,它會輸出「ooooo」。 – 2012-07-08 08:59:58

+0

@FirstLady:this'backward.substring(backward.length() - 1);'是不正確的,請自己解決。 – 2012-07-08 09:16:02

1

您的循環搞砸了,它永遠不會運行,因爲你有錯誤的情況下,將其更改爲:

for (int i=backward.length(); i>=0; i--) 
+0

謝謝,ftom2!但是當我運行代碼時,例如我輸入「hello」,它會輸出「ooooo」。 – 2012-07-08 09:00:57

0

您應該StringBuilder。以下代碼應該按照您的預期工作。

public static String ReverseStr(String backward) 
{ 
    String newString = ""; 
    StringBuilder sb=new StringBuilder(backward); 
    for (int i=0; i>backward.length(); i--) //backward.length() may be replaced with sb.length() 
    { 
     String subChar = sb.charAt(i); //Replace `substring()` with `charAt()` 
     newString += subChar; 
    } 
    return newString; 
} 
0
public static String ReverseStr(String backward) { 

     String newString = ""; 

     for (int i=backward.length()-1; i>=0; i--) 
      newString+ = backward.charAt(i); 

     return newString; 
} 
1
class Test 
{ 
    public static void main(String[] args) 
    { 
     String strtorev = "Test Code"; 
     String newString = ""; 
     int len = strtorev.length(); 
     System.out.println(len); 
     for(int i =0;i<len;i++) 
     { 
      String subChar = strtorev.substring(strtorev.length()-1-i,strtorev.length()-i); 
      newString += subChar; 
      System.out.println(newString); 
     } 
    } 
} 
相關問題