This method must return a result of type int

milexy1986

Neues Mitglied
Hallo Leute,

bin auch ziemlicher Anfaenger mit Java. Hier habe ich mal ein ganz ganz einfaches Beispiel. Was ist da nicht OK. Alle Werte sind ja vom Typ int . ?????:L ...Danke im Vorraus

Java:
public class Uebung {
	 static int test (int a) {      //This method must return a result of type int 
		if (a == 1)
			return 1;
		else if (a == 2)
			return 2;

	} 

	public static void main(String arguments[]) {
		System.out.println(test(1));

	}
}
 
Zuletzt bearbeitet von einem Moderator:
du braucht noch ein return falls a nicht 1 oder 2 ist, könnte so aussehen:

Java:
public class Uebung
{
     static int test (int a)
     {

        if (a == 1) return 1;
        else if (a == 2) return 2;
        return 0;

    }

    public static void main(String arguments[]) {
        System.out.println(test(1));
    }
}
 
Du musst generell in Java bei jeder nicht void-Methode (void = "Still") etwas zurück geben.

Du müsstest also z.B. nach deiner if-Abfrage noch ein else machen:

Java:
static int test (int a) {      //This method must return a result of type int 
        if (a == 1)
            return 1;
        else if (a == 2)
            return 2;
        else return 0;
}

Oder halt einfach am ende der Methode ein
Code:
return 0

Wie du das ganze Lösen könntest ohne ein weiters return wäre mit globalen Variablen, aber das is nen anderes Thema ^^
 
Java:
if (a == 1)
    return 1;
else if (a == 2)
    return 2;
}

An deiner Stelle, würde ich die [c]{}[/c]-klammern verwenden. Das obenstehende wird zwar (abgesehen von dem fehlenden return-Statement) funktionieren, ist aber fehleranfälliger. Also besser:
Java:
if(a==1) {
   return 1;
} else if(a==2) {
   return 2;
}

//return -1;

wobei man hier auch einfach schreiben könnte
Java:
static int test(int a) {
     return a;
}
aber da es offensichtlich eine Übung ist, hinterfrage ich den Sinn mal nicht 😀
 
Würd mich mal interessieren, inwiefern globale Variablen (was auch immer das sein soll) das return-Statement ersetzen können?!

Java:
public class Uebung
{

	private static int ausgabe = 0;

	public static void test(final int a) {

		if (a == 1) {
			ausgabe = 1;
		} else if (a == 2) {
			ausgabe = 2;
		} else {
			ausgabe = 0;
			// Oder ausgabe = a;
		}

	}

	public static void main(final String arguments[]) {
		test(1);
		System.out.println(ausgabe);
	}
}

Aber wie gesagt, wird wohl nicht sinn der Übung gewesen sein.....
 
Die bisherigen Tipps waren sehr gut und da gibt es kaum noch etwas zu ergänzen. In manchen Fällen macht es Sinn jedoch nur einen return in einer Methode zu definieren. Es macht bei unübersichtlichen Methoden aus meiner Sicht die Fehlersuche einfacher.

Hier einmal das Beispiel:
Java:
static int test (int a)
{
   int rueckgabe=-1;
   if (a == 1) {
       rueckgabe = 1;
   } else if (a == 2) {
       rueckgabe = 2;
   }
   return rueckgabe;
}

Aus meiner Sicht könnte die Methode also auch in dieser Form Sinn machen, aber dies ist, wie vieles, eine Stilfrage.
 
Würd mich mal interessieren, inwiefern globale Variablen (was auch immer das sein soll) das return-Statement ersetzen können?!

Ich glaube, er meint wohl sowas:
Java:
public class Sample {
    private int result=-1;

    public void test(int a) {
         if(a==1) {
            result=1;
         } else if(a==2) {
            result=2;
         }
    }

    public int getResult() {
         return result;
    }
}
 
Jepp, sowas meinte ich, hatte ich nen stück weiter oben ja auch schon geschrieben ^^

Ja, es kann sein, dass ich hier irgendetwas falsch verstanden habe, aber ein return statement wird immer notwendig, wenn man Variablen außerhalb der Klasse abfragen möchte. In diesem Vorschlag wird es nur in getResult gekapselt.
Das standardisierte Vorgehen ist, dass man eine private Variable anlegt und diese mit Hilfe einer set/get - Methode außerhalb der Klasse sichtbar macht. 😉
 
@Gossi: Als ich die antwort geschrieben hatte, war dein Post noch nicht da ;-). Ich finde diese Variante in dem Falle nicht gut. Wenn es ein einfaches Ergebnis ist, kann man das auch gleich zurückgeben.
 
Ja, es kann sein, dass ich hier irgendetwas falsch verstanden habe, aber ein return statement wird immer notwendig, wenn man Variablen außerhalb der Klasse abfragen möchte. In diesem Vorschlag wird es nur in getResult gekapselt.
Das standardisierte Vorgehen ist, dass man eine private Variable anlegt und diese mit Hilfe einer set/get - Methode außerhalb der Klasse sichtbar macht. 😉

@Gossi: Als ich die antwort geschrieben hatte, war dein Post noch nicht da ;-). Ich finde diese Variante in dem Falle nicht gut. Wenn es ein einfaches Ergebnis ist, kann man das auch gleich zurückgeben.

Stimmt! So kann man es auch ausdrücken! 🙂

Ich habe ja auch nie geschrieben, das diese Methode gut/richtig wäre, ich wollte lediglich darauf hinweisen, das es sie gibt, in diesem Beispiel wäre ne globale Vaiable dafür auch völlig übertrieben.
 

Neue Themen


Zurück
Oben