2017-06-27 27 views
1

測試代碼的Java lastIndexOf總是返回-1,如果字符是空間的fromIndex設置

public class HelloWorld{ 
    public static void main(String []args){ 
     System.out.println("Hello World".lastIndexOf(' ')); 
     System.out.println("Hello World".lastIndexOf(' ', 1)); 
     System.out.println("Hello World".lastIndexOf('e')); 
     System.out.println("Hello World".lastIndexOf('e', 1)); 
    } 
} 

結果

5 
-1 
1 
1 

我期待的第二個結果是5,但它是 - 1。第一個如何是正確的,但第二個是錯的?

+0

結帳文檔:@返回字符的最後一次出現在該對象表示的 *字符序列的索引是少 *小於或等於{@code fromIndex}或{@code -1} *如果該字符在該點之前未出現。 – Abhishek

+0

從javadoc:「如果在此字符串_at或before_ position _fromIndex_中不存在此類字符,則返回-1。」 。 – Berger

+1

Thx們。我知道-1沒有找到,但我沒有注意到是否有權利離開。名爲fromIndex的變量讓我困惑,我假設它從fromIndex搜索start的子字符串。 – Joshua

回答

2

lastIndexOf()從右到左,所以當它以索引1(第二個字符,即'e')開頭時,它找不到空格(索引爲5)。

2

最簡單的方法

lastIndexOf(INT CH,INT的fromIndex)返回ch的指數僅如果發生在或之前的fromIndex,否則返回-1。

System.out.println("Hello World".lastIndexOf(' ', 3)); 

返回-1。

System.out.println("He llo World".lastIndexOf(' ', 3)); 

返回2.