isSubstring???

vjung

Aktives Mitglied
Java:
public class Aufgabe4
{
    public static void main(String[] args)
    {
        /* Test */
        //String str0 = "", str1 = "";
        //String str0 = "", str1 = "cool";
        //String str0 = "OOPI find ich cool!", str1 = "";
        //String str0 = "OOPI find ich cool!", str1 = "cool";
        //String str0 = "OOPI find ich cool!", str1 = "OOPI find ich cool!";
        String str0 = "OOPI find ich cool!", str1 = "find ich doof";
        
        if(isSubstring(str0, str1))
        {
            System.out.println("Ja, \""+str1+"\" ist ein Substring von \""+str0+"\" !");
        }
        else
        {
            System.out.println("Nein, \""+str1+"\" ist KEIN Substring von \""+str0+"\" !");
        }
    }
    
    //------------------------------------------------------------------------/
    
    private static boolean isSubstring(String str0, String str1)
    {
        if(str0.length()<str1.length())
        {
            return(false);
        }
        
        if(str1.length()==0)
        {
            return(true);
        }
        
        int j = 0;

Dies hier ist die Lösung einer Aufgabe bei uns aus der Uni. Ich verstehe da jedoch ein Paar Sachen nicht und hoffe ihr könnt mir da etwas helfen.


1.: Warum versteht der compiler die if anweisung nicht, wenn ich den unteren Teil des Codes weglasse. Also letztendlich nurnoch diesen Teil habe:
Java:
if(isSubstring(str0, str1))
        {
            System.out.println("Ja, \""+str1+"\" ist ein Substring von \""+str0+"\" !");
        }
        else
        {
            System.out.println("Nein, \""+str1+"\" ist KEIN Substring von \""+str0+"\" !");
        }

2.: Was macht denn dieser Teil?(nachfolgender code) Oo
Java:
private static boolean isSubstring(String str0, String str1)
    {
        if(str0.length()<str1.length())
        {
            return(false);
        }
        
        if(str1.length()==0)
        {
            return(true);
        }
        
        int j = 0;

Bin bisher in keinem Programm aus dem Rahmen
Java:
public static void main(String[] args)
{
.......
}
rausgekommen. nun wird hier eine neue main Methode eröffnet oder was ist das? (Wshl keine main methode, da dort kein main steht :/) Gibt dieser Teil wohl an die if bedingung im ersten Teil etwas zurück? Denn ohne diesen wird der erste Teil ja garnicht erst verstanden.

Hoff hier kann mir jemand helfen. Wäre zutiefst dankbar :)
 
Zuletzt bearbeitet von einem Moderator:

Kababär

Top Contributor
Benutze bitte die Java-Tags, dann guckt sich das auch vielleicht jemand an.
Sieht dann so aus:
Code:
dein Coode

Oben rechts ist ein Blatt (hover over: einfügen ....) -> Code
 

Robat

Top Contributor
Um deine 1. zu beantworten fang ich mal mit der 2. Frage an:

2.: Was macht denn dieser Teil?(nachfolgender code) Oo

Was du hier siehst ist eine Methode. Eine Methode ist ein Bestandteil einer Klasse der dazu dient, wiederkehrende Codeabschnitte nicht immer wieder schreiben zu müssen. In der objektorientierten Programmierung dienen Methoden auch der Interaktion zw. Objekten.
Eine Methode kann einen Rückgabetyp besitzen (z.B. String, int, double, boolean, ..) muss aber keinen haben (void). Außerdem besitzt eine Methode beliebig viele Parameter, die du in den () Klammern siehst. Der Aufbau einer Methode sieht allgemein so aus:
Java:
modifier Rückgabetyp name(Para1 par1, Param2 par2,..)
{
    code...
}

Was du da siehst ist eine Methode die als Rückgabe ein boolean besitzt. Als Parameter erwartet sie 2 Strings. Der name ist isSubstring.
Java:
private static boolean isSubstring(String str0, String str1)
{
    if(str0.length()<str1.length())
    {
        return(false);
    }

    if(str1.length()==0)
    {
        return(true);
    }
}
Deine Methode macht momentan folgendes:
Wenn die Länge des 1. Strings kleiner ist als die Länge des 2. Strings dann wird false zurückgegeben.
Wenn das nicht so ist wird geprüft ob die länge des 2. Strings 0 ist, dann ist true zurückgegeben.
[ob das Sinn hat, sei erstmal dahin gestellt].

Jetzt zu deiner 1. Frage..

1.: Warum versteht der compiler die if anweisung nicht, wenn ich den unteren Teil des Codes weglasse. Also letztendlich nurnoch diesen Teil habe:

Wie oben schon geschrieben ist isSubstring(String s1, String s2) eine Methode die du implementiert hast - sie ist also nirgends vorgegeben.
Da du diese Methode in deinem Code
Java:
if(isSubstring(str0, str1))
{
    System.out.println("Ja, \""+str1+"\" ist ein Substring von \""+str0+"\" !");
}
else
{
    System.out.println("Nein, \""+str1+"\" ist KEIN Substring von \""+str0+"\" !");
}

verwendest musst du dem Compiler auch sagen was diese Methode eig. ist. Wenn du das nicht machst dann kennt er die Methode gar nicht.
Was hier passiert ist folgendes:
Ob der if Teil oder der Else Teil ausgeführt wird hängt vom Rückgabewert deiner Methode ab.
Wenn deine Methode isSubString true zurückgibt, wird System.out.println("Ja, \""+str1+"\" ist ein Substring von \""+str0+"\" !"); ausgeführt. Wenn false zurückgegeben wird, dann wird System.out.println("Nein, \""+str1+"\" ist KEIN Substring von \""+str0+"\" !"); ausgeführt.
 

Neue Themen


Oben