Informatik Studium Aufgabe

TheApfelBaum

Neues Mitglied
Ich muss folgende Aufgabe lösen und habe es auch so einigermaßen gelöst aber wenn ich das programm dann ausführe gibt er mir das richtige ergebnis nur gibt er mir das unendlich mal aus bis eine fehlermeldung kommt. Wegen dem die frage ich dafür sorgen kann das er die lösung nur einmal ausgibt?

das ist meine bisherige Lösung:

public class Cocktail {

private String spirituose;
private String saft;
private boolean enthaeltSahne;
private boolean enthaeltAlkohol;
private boolean enthaeltKokos;

public Cocktail(String spirituose, String saft, boolean enthaeltSahne, boolean enthaeltAlkohol,
boolean enthaeltKokos) {
super();
this.spirituose = spirituose;
this.saft = saft;
this.enthaeltSahne = enthaeltSahne;
this.enthaeltAlkohol = enthaeltAlkohol;
this.enthaeltKokos = enthaeltKokos;
}


public String ermittleBezeichnung() {



if(spirituose.equals("Rum") && saft.equals("Ananas") && enthaeltSahne == true && enthaeltAlkohol == true && enthaeltKokos == true) {
System.out.println("Pina Colada");
}
else if(spirituose.equals("") && saft.equals("Ananas") && enthaeltSahne == true && enthaeltAlkohol == false && enthaeltKokos == true){
System.out.println("Virgin Colada");
}
else {
System.out.println("nichts");
}
return ermittleBezeichnung();



}

public static void main(String[] args) {
Cocktail c1 = new Cocktail("Rum", "Ananas", true, true, true);
System.out.println(c1.ermittleBezeichnung());

}

}


1639063101348.png
 
Die Methode ist ja auch Rekursiv ohne Abbruchbediingung. ermittleBezeichnung(); ist ein Methodenaufruf.
Statt die Bezeichnung in dem if statement auszugeben, weisse sie einer Variabeln zu und returne diese am Ende.

Sorry habe ffhoffmann`s post noch nicht gesehen
 
Ändere die Methode folgender maßen ab dann sollte es klappen
[CODE lang="java" title="So sollte die Methode dann aussehen"]public String ermittleBezeichnung() {
String bezeichnung;
if(spirituose.equals("Rum") && saft.equals("Ananas") && enthaeltSahne == true && enthaeltAlkohol == true && enthaeltKokos == true) {
bezeichnung = "Pina Colada";
}
else if(spirituose.equals("") && saft.equals("Ananas") && enthaeltSahne == true && enthaeltAlkohol == false && enthaeltKokos == true){
bezeichnung = "Virgin Colada";
}
else {
bezeichnung = "nichts";
}
return bezeichnung;

}[/CODE]
 

Zurück
Oben