2014-11-24 218 views
-3
public class Main { 


    public static String reverseWords(String s) { 
     StringBuilder reversed = new StringBuilder(); 
     int j = s.length(); 
     for (int i = s.length() - 1; i >= 0; i--) { 
      if (s.charAt(i) == ' ') { 
       j = i; 
      } else if (i == 0 || s.charAt(i - 1) == ' ') { 
       if (reversed.length() != 0) { 
        reversed.append(' '); 
       } 
       reversed.append(s.substring(i, j)); 
      } 
     } 
     return reversed.toString(); 
    } 

    public static void main(String[] args) { 

     String str = "sky is blue"; 
     String retStr = reverseWords(str); 
     System.out.println(retStr); 

    } 
} 

這是一個成熟的可運行和corect母鹿。 IT顛倒了句子的單詞順序。java substring可以在超出範圍的索引上運行嗎?

但是這一行。

reversed.append(s.substring(i, j)); 

它將在第一次被稱爲s.substring(7,11)和s是「天藍色」。 所以你可以看到索引7是'b',但是索引11在'e'之後。

在C++中我知道這個事業多畝問題。但是爲什麼在Java中,它很好?如此迷茫。 我檢查了java文檔,它說substring()需要開始和結束索引。 我現在不知道。

需要幫助 感謝

+0

「_JAVA子能夠超出範圍的指數運行_?」不,這「T。 – csmckelvey 2014-11-24 06:02:24

回答

1

該子字符串從指定的beginIndex,並延伸至字符索引endIndex - 1的

+1

由於這是來自文檔的直接引用,因此您應該爲其鏈接[像這樣](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring (INT,%20int))。 – csmckelvey 2014-11-24 06:03:32