Frage von MrVectrex, 34

Hallo zusammen Ich bin bei BlueJ soeben auf folgendes Problem gestoßen. Warum wird bei meiner Addtion hinterher das X ausgegeben anstatt das ergebnis?

Ich habe zuerst (zwar sehr umständlich) die Klasse addiere definiert

public int addiere(int x, int y) {

 for(int i=0; i<y; i++)  {      

             x++;                     
    }
    return x;                    
   }

HInterher wollte ich diese zum Test in einer neuen Klasse laufen lassen :

public int test(int x, int y){
    addiere(x,y) ;
       return x; 
}

Als Ergebnis bekomme ich immer das Anfangs X heraus.

Ich habe schnell einen Work-around gefunden:

public int testadd(int x, int y){
        int erg=0;
        erg = addiere(x,y);
        return erg ;
    }
  

Dennoch:

Warum funktioniert die Klasse test() nicht? Warum wird das X nicht geändert?

Vielen Dank

Antwort
von AntonJJ, 20

addiere(x,y);

Schööön xD

Der Ausdruck wird zwar berechnet, du verwendest ihn aber nicht, du könntest gleich

pass; (Anweisung, die nichts tut / Platzhalter)

schreiben.

Du musst doch mit dem berechneten Ausdruck irgendetwas machen.

Also definierst du entweder eine lokale Variable, in der der Ausdruck direkt gespeichert wird und gibst diesen dann zurück oder schreibst gleich:

return addiere(x,y);

Sonst wird nämlich der Parameter x gleich zurückgegeben, womit y sinnlos wird.

int erg=0; ist übrigens sinnlos, solltest du keine Threads verwenden oder Inkosistenzen vor Methodenschluss vermeiden wollen.



Kommentar von MrVectrex ,

Danke für die schnelle Antwort, da habe ich leider was vergessen... 

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten