2017-03-12 69 views
0

此代碼無法使用。你能告訴我什麼是錯的,爲什麼?使用for循環,如何反轉字符串?

package exer0403e08; 


public class EXER0403E08 { 
    public static void main(String[] args) { 
     String str= "hello"; 
     System.out.println(str); 
     char[]strchar = str.toCharArray(); 
     int first; 
     int last=5; 

     System.out.println("The reversed is: "); 
     for (first=1; first<=5; first++){ 
      strchar[first]=strchar[last]; 


      last--; 

     } 
     str=String.valueOf(strchar); 
     str=str.toUpperCase(); 
     System.out.println(str); 


    } 

} 

答案是「OLLO」,我想讓它成爲「OLLEH」。

+1

這是java而不是JavaScript – minigeek

+0

這我不是一個jaascript問題 – brk

+0

這是怎麼回事? –

回答

1

你循環有幾個問題。你誤解了數組索引。

您正在迭代和修改相同的數組。因此奇怪的行爲和索引將從數組的零開始。

所以固定的代碼將

public static void main(String[] args) { 
     String str = "hello"; 
     System.out.println(str); 
     char[] strchar = str.toCharArray(); 
     int first; 
     int last = 4; 

     System.out.println("The reversed is: "); 
     for (first = 0; first < 5; first++) { 
      strchar[first] = str.charAt(last); 

      last--; 

     } 
     str = String.valueOf(strchar); 
     str = str.toUpperCase(); 
     System.out.println(str); 

    } 

更新:

演示鏈接http://ideone.com/GfgDZ3

+0

沒有任何改善。顯示的答案是OLLLO –

+0

@ h.harry輸出無誤。請參閱上述代碼中的更改 – minigeek

+0

添加了演示鏈接。 –

0

你必須在Java中更好的方法來扭轉字符串。早期

new StringBuilder(hi).reverse().toString() 

或者,版本比JDK 1.5,使用java.util.StringBuffer代替StringBuilder - 它們具有相同的API:請檢查this答案:

您可以使用此。感謝評論員指出StringBuilder現在是首選。

+0

這個想法是學習數組和循環等 –

+0

沒想到SO是一個教程網站:-) 而且,問題並沒有說他只是想學習循環:-) –

+0

好的,但我們的老師不會接受。他只喜歡使用for循環。 –

1

你可以寫你自己的方法是這樣的:

public static String reverse(String str) 
    { 
    String reversed = new String(); 

    for (int j = str.length()-1; j >= 0; j--) 
     reversed += str.charAt(j); 

    return reversed; 
    } 

,然後嘗試反向( 「你好」);

+0

這很複雜 –

+0

@ h.harry以及您對其他answer.s.o的評論。是q&a網站,但嚴格的,這就是爲什麼它具有質量。谷歌爲它。所有最好的編碼..這個答案並不複雜,只是索引是相反的 – minigeek

+0

@minigeek謝謝你的外遇。 –

相關問題