Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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));
}
}
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.
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.