startsWith method und substring

Diskutiere startsWith method und substring im Java Basics - Anfänger-Themen Bereich.
A

arhzz

Hallo! Eine kurze Frage über diesen Code. Nämlich wenn ich den Code ohne den ersten if statement probiere,ist die Ausgabe true und dann ein "StringOutOfBoundException" exception. Warum passiert dass? Sollte es nicht nur false züruckliefern,da dieser String nicht existiert? Oder versucht das Program eine Stelle weiter zu gehen und geht raus aus dem String? Vielleicht rede ich Blüdsinn, bin sicher jemand weiss genau was passiert. Danke!

Java:
public class test {
    private static final String TEXT = "This is the text to be searched";

    private static boolean hasSubstring(String toFind, String findFrom) {
        //ohne das StringOutOfBound exception
        if (findFrom.length() == 0) {
            return false;
        }
        if (findFrom.startsWith(toFind)) {
            return true;

        }
        return hasSubstring(toFind, findFrom.substring(1));
    }


    public static void main(String[] argv) {

        System.out.println(hasSubstring("text to", TEXT));
        System.out.println(hasSubstring("goo", TEXT));
        System.out.println(hasSubstring("This", TEXT));
        System.out.println(hasSubstring("searched", TEXT));
        System.out.println(hasSubstring("the  text", TEXT));
    }
}
 
L

LimDul

Wenn das erste if mal weg ist. Was passiert denn, wenn der String nicht gefunden wird? Dann wird im zu suchenden String das erste Zeichen abgeschnitten.

Und nun rate mal, was passiert, wenn der String ein leerer String ist und du versuchst das erste Zeichen abzuschneiden? Das geht nicht und gibt eine Exception.

Was da auch mal hilft, das ohne das erste if was fehlt. Wenn du das streichst, wie kann die Methode dann jemals false liefern?

Entweder sie liefert true oder sie ruft sich selber auf - aber false kann niemals kommen. Damit sollte dann klar sein, dass was fehlt.
 
A

arhzz

Wenn das erste if mal weg ist. Was passiert denn, wenn der String nicht gefunden wird? Dann wird im zu suchenden String das erste Zeichen abgeschnitten.

Und nun rate mal, was passiert, wenn der String ein leerer String ist und du versuchst das erste Zeichen abzuschneiden? Das geht nicht und gibt eine Exception.

Was da auch mal hilft, das ohne das erste if was fehlt. Wenn du das streichst, wie kann die Methode dann jemals false liefern?

Entweder sie liefert true oder sie ruft sich selber auf - aber false kann niemals kommen. Damit sollte dann klar sein, dass was fehlt.
Danke für die Super Antwort!
 
Thema: 

startsWith method und substring

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben