2014-10-07 79 views
0

我正在做一個Java編程問題,我的解決方案可行,但我看到別人在他們的博客上發佈的解決方案有點短,但我不明白它爲什麼可行。這兩個子串調用爲什麼相等?

的問題是:

給定一個非空字符串和一個int N,則返回其中索引爲n個字符已被刪除一個新的字符串。 n的值將是原始字符串中char的有效索引(即,n將在0..str.length()-1的範圍內)。

我的代碼(其在各種條件下工作):

public String missingChar(String str, int n) { 
    return str.substring(0,n) + str.substring(n+1,str.length()); 
} 

其它代碼也工作原理是:

public String missingChar(String str, int n) { 
    return str.substring(0, n) + str.substring(n + 1); 
} 

所不同的是在第二個行的末尾。
我的問題是爲什麼str.substring(n+1)產生與str.substring(n+1,str.length())相同的結果?

+3

你真的讀過javadoc嗎? – 2014-10-07 15:28:24

+3

閱讀API文檔。 – 2014-10-07 15:28:39

+2

'substring'方法被重載,所以你可以這樣調用它。 http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#substring-int- – khelwood 2014-10-07 15:30:34

回答

5

子串()方法有兩個變種:

public String substring(int beginIndex)

public String substring(int beginIndex, int endIndex)

子串開始在指定的beginIndex的字符,並延伸到該字符串的末尾如果給出第二個參數,則最大爲endIndex - 1

0

如果鍵入:

str.substring(n + 1); 

這意味着它將從指數n + 1返回整個字符串到end of the string

當你鍵入:

str.substring(n + 1, str.length()); 

這幾乎是同一個意思。它會將整個字符串從索引
n + 1返回到str.length - 1,即直到字符串結束。

請仔細閱讀文檔。

Substring docs