2016-05-08 3 views
-2

Ich versuche, eine Teilstring-Methode mit nur CharAt-Methode der String-Klasse
zu implementieren Das Problem tritt auf, wenn ich das letzte Zeichen in den Suchbegriff 'Hat.' Ansonsten funktioniert alles perfekt.
Auch bei der Suche nach Beispiel für 'Hut' sehe ich die CharAt (j) Ablaufverfolgung druckt alle "h" mit Index 0 für alle Zeichen und wahren Auftreten.
Dies ist der komplette Code: 'Hut'Implementieren von Substring-Prüfmethode mit nur charAt

public class SubString { 
    public static void main(String[] args) { 

     String line = "The cat in the hat."; 
     String item = "hat."; 

     System.out.println("'" + item + "' is substring of '" + line + "' : " + isSubString(item, line)); 

    } 

    private static boolean isSubString(String item, String line) { 
     int i = 0; 
     int j = 0; 
     int count = 0; 

     for (i = 0; i < line.length() - item.length(); i++) { 

      for (j = 0; j < item.length(); j++) { 

       if (item.charAt(j) != line.charAt(i + j)) { 
        break; 
       } 

       if (item.charAt(j) == line.charAt(i + j)) { 
        System.out.println(item.charAt(j) + ":" + j + " - " + line.charAt(i + j) + ":" + (i + j)); 
        count++; 
       } 

       if (count == item.length()) 
        return true; 

      } 

     } 
     return false; 
    } 
} 

wieder das Problem tritt auf, wenn für die Suche < == das letzte Wort mit Punkt.
und der ‚Hut‘, die zwar return true aber Spur falsche Zeichen zeigt (nur H verglichen) und Indizes sind immer 0.

Antwort

1

Die erste Schleife lässt das letzte Zeichen der versuchen sollte, Zeichenfolge. d. h. line.length() - item.length()

Bitte ersetzen Sie es durch unten für den Zustand der Schleife.

for (i = 0; i < line.length() - item.length() + 1; i++) {    
-1

Sie

line.contains(item) 
+0

können Sie bitte erklären, warum und wie dies dem OP helfen wird? –

Verwandte Themen