Methoden Verstehe nicht was in der Methode gemacht wird?

g_gex

Mitglied
Kann vlt jmd erklären warum hier eine 10 ausgegeben wird

Java:
public class dgg {

	static int a(int i, int n) {
		while(i < n) {
		i = i + 1;
		if(i == 3)
		return 10;
		}
		return i;
		}

	
	public static void main(String[]args)
	{
		
			System.out.println(a(0, 3));
	}

}

ich weiß das der Schlüsselwort return das macht aber so wirklich verstehe ich das nicht ?
 
Zuletzt bearbeitet:
Hallo g_gex,

die Merkwürdigkeit ergibt sich aus einer fehlenden schließenden Klammer.
Mit einer besseren Einrückung ergibt sich folgendes Bild:

Java:
static int a(int i, int n) {
    while(i < n) {
        i = i + 1;
        if(i == 3)
            return 10;
    }
    return i;
}


Wahrscheinlich war aber das hier gemeint:

Java:
static int a(int i, int n) {
    while(i < n) {
        i = i + 1;
        if(i == 3)
            return 10;
        }
        return i;
    }
}


Löst das Deine Verwunderung auf?
 
Zuletzt bearbeitet:
Wahrscheinlich war aber das hier gemeint:

Java:
static int a(int i, int n) {
    while(i < n) {
        i = i + 1;
        if(i == 3)
            return 10;
        }
        return i;
    }
}


Löst das Deine Verwunderung auf?[/QUOTE]

Nein dann wäre eine Klammer zu viel
 
Nein dann wäre eine Klammer zu viel

OK, ich hatte ein "{" am Ende meiner 4. Zeile vergessen.

Mit folgendem Code
Java:
static int a(int i, int n) {
    while(i < n) {
        i = i + 1;
        if(i == 3)
            return 10;
    }
    return i;
}
ist das Verhalten aber klar, wenn die Methode mit den Werten i==0 und n==3 aufgerufen wird.

Die while-Schleife wird dreimal durchlaufen (mit i==0, i==1 und i==2) und inkrementiert dabei jeweils die Variable i.
Beim Durchlauf mit i==2 bekommt i den Wert 3.
Damit greift zum ersten Mal die if-Bedingung: die Methode wird beendet und liefert den Wert 10.

Das "return i;" am Ende der Methode wird bei den Startwerten (i,n)==(0,3) nie erreicht.
 

Zurück
Oben