2016-11-20 49 views
1

我想在不使用indexOf方法的情況下找到字符串中某些字母的索引。我能夠做到這一點,但我也希望任何不在/字符串中的字母都返回-1。我嘗試了一條if語句,它返回-1以及該字母的索引。我只想要一個或另一個。有沒有辦法做到這一點?謝謝!如何在不使用Java中的indexOf的情況下複製正常運行的indexOf方法?

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class randomtest { 
    public static void main (String args[]) { 
      String text = "Cheeki Breeki"; 
      String letterToFind = "C"; 
      Pattern word = Pattern.compile(letterToFind); 
      Matcher match = word.matcher(text); 
      if (!letterToFind.equals(text)) { 
       System.out.println("-1"); 
      } 

      while (match.find()) { 
      System.out.println("Found letter at index "+ match.start()); 
     } 

     } 

} 
+0

「我還貼了一張圖片而不是代碼」,但是爲什麼?不要將文本/代碼發佈爲圖片/鏈接([更多信息](http://meta.stackoverflow.com/a/285557)) – Pshemo

+1

不發佈圖片,郵編。點擊[編輯],粘貼代碼。然後選擇它,然後點擊上面的[[}]按鈕。 – dasblinkenlight

+0

我現在添加了代碼 – gman8pie

回答

0

您正在使用下面的錯誤的代碼。由於String letterToFind = "C";String text = "Cheeki Breeki";你在比較這兩個在你的if語句中總是會出錯,或者字符在字符串中存在或不存在。因爲在一個字符串中你有完整字符串而在另一個變量中你有characterToFind

if (!letterToFind.equals(text)) { 
    System.out.println("-1"); 
} 

使用下面的代碼,使用布爾標誌來檢查是否找到字符。

public static void main(String args[]) { 
     String text = "Cheeki Breeki"; 
     String letterToFind = "A"; 
     Pattern word = Pattern.compile(letterToFind); 
     Matcher match = word.matcher(text); 

     boolean letterFound = false; 

     while (match.find()) { 
      letterFound = true; 
      System.out.println("Found letter at index " + match.start()); 
     } 

     if (!letterFound) { 
      System.out.println("-1"); 
     } 
    }