Methode bekommt Array und int Wert

korona

Mitglied
Guten Morgen,

ich möchte an die Methode ein Array und ein int Wert übergeben und eine int als Rückgabewert. Allerdings funktoniert es nicht. Kann mir bitte einer sagen was daran falsch ist?

NetBeans unterstreicht die erste Zeile und sagt
missing return statement
Code:
    public int in_array(int[] arr, int val){
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == val) {
                return i;
            } else
            return -1;
        }       
    }

Schönen Gruß
 
Hi,

für den Fall, dass de Länge des Arrays 0 ist, wird die for-Schleife 0 mal durchlaufen, also würde dann nichts zurückgegeben, obwohl der Rückgabetyp int ist!

Du willst wohl -1 zurückgeben, falls der Wert nicht enthalten ist.?
Das geht so:
Java:
public int in_array(int[] arr, int val){
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == val)   return i;        
    }
    return -1;   // Wird nur erreicht, wenn Wert nicht enthalten
}

Gruß
 
NetBeans sieht das return-Statement nicht, da es innerhalb des for-Blockes liegt. Das return-Statement muss vor der letzten geschweiften Klammer sein.
 
Hallo,
ich danke euch beiden für die Antwort es funktioniert.

Ich wundere mich über das weglassen des "else" und der Klammer, kürzlich habe ich die Erfahrung machen müssen das eine if-Schleife nicht funktioniert weil das else gefehlt hat aber hier funktionierts.:confused:

Nochmals Danke und Schönen Gruß
 
Hi

Ein if muss in keinem Fall ein else haben, das geht auch immer allein.
Muss wohl was Anderes falsch gewesen sein.

if ist übrigens keine Schleife.
Schleifen wiederholen sich: while, for...

Gruß
 
Wie bereits geschrieben, liegt es am return-Statement innerhalb des for-Blocks und nicht am else. D.h. es würde auch so gehen:

Code:
	public int in_array(int[] arr, int val) {
		int a = 0;
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] == val) {
				a = i;
				;
			} else
				a = -1;
		}
		return a;
	}
 
Zurück