Hallo Leute,
ich hab einen kleinen Hänger und komm nicht mehr weiter. Wenn ich folgenden Code laufen lasse bekomm ich das Problem, dass es trotz Abbrechen weiter Geld annimmt. Ich hatte das Programm schonmal am laufen muss es aber umändern, da es zu lang war.
Ich sehe für mich das Problem besonders in der Steuereinheit und meiner Abbruch Taste. Ich möchte nach den cases die Möglichkeit geben abzubrechen.
Wie schaffe ich es das mein Programm wieder zum Anfang springt und nicht das komplette Programm abbricht sonder neu die Tastatur ausgibt?
Vielen Dank schon mal im vor raus
Ich hoffe durch meine Versuche ist es nicht ganz außer rand und band geraten :-D
ich hab einen kleinen Hänger und komm nicht mehr weiter. Wenn ich folgenden Code laufen lasse bekomm ich das Problem, dass es trotz Abbrechen weiter Geld annimmt. Ich hatte das Programm schonmal am laufen muss es aber umändern, da es zu lang war.
Ich sehe für mich das Problem besonders in der Steuereinheit und meiner Abbruch Taste. Ich möchte nach den cases die Möglichkeit geben abzubrechen.
Wie schaffe ich es das mein Programm wieder zum Anfang springt und nicht das komplette Programm abbricht sonder neu die Tastatur ausgibt?
Vielen Dank schon mal im vor raus
Ich hoffe durch meine Versuche ist es nicht ganz außer rand und band geraten :-D
Java:
public class Steuereinheit2
{
private static int preisKaffeeSchwarz = 100;
private static int preisKaffeeMilch = 150;
private static int preisKaffeeZucker = 150;
private static int preisKaffeeMilchZucker = 200;
private static int a;
static Muenzwerk2 m = new Muenzwerk2();
public static void main(String[] args)
{
Tastatur2 t = new Tastatur2();//Objekte erzeugen
Display2 d = new Display2();
Depot2 d1 = new Depot2(5,5,5,2,2);
do{
m.anzahlPruefen();//Münzprüfung
d.textAnzeigen();
switch(t.tasteAbfragen())//Beginn Kaffeeabfrage
{
default:
IO.writeln("Fehler!");
break;
case 1:
m.setKaffeepreis(preisKaffeeSchwarz);
a = m.getKaffeepreis(); //Preis wird festgelegt
if(d1.wasserPruefen() == true && d1.becherPruefen() == true && d1.kaffeePruefen() == true) //Depotprüfung
{
IO.writeln("Sie haben gewählt: Kaffee schwarz \n"+ "Der Kaffee kostet " + preisKaffeeSchwarz + " Cent"); //Anzeige Auswahl
}
else
{
IO.writeln("Bitte Fehler beheben!");
}
break;
case 2:
m.setKaffeepreis(preisKaffeeMilch);
if(d1.wasserPruefen() == true && d1.becherPruefen() == true && d1.kaffeePruefen() == true && d1.milchPruefen() == true) /*Kaffee schwarz*/
{
IO.writeln("Sie haben gewählt: Kaffee mit Milch\n"+ "Der Kaffee kostet " + preisKaffeeMilch + " Cent");
}
else
{
IO.writeln("Bitte Fehler beheben!");
}
break;
case 3:
m.setKaffeepreis(preisKaffeeZucker);
if(d1.wasserPruefen() == true && d1.becherPruefen() == true && d1.kaffeePruefen() == true && d1.zuckerPruefen() == true) /*Kaffee schwarz*/
{
IO.writeln("Sie haben gew�hlt: Kaffee mit Zucker\n"+ "Der Kaffee kostet " + preisKaffeeZucker + " Cent");
}
else
{
IO.writeln("Bitte Fehler beheben!");
}
break;
case 4:
m.setKaffeepreis(preisKaffeeMilchZucker);
if(d1.wasserPruefen() == true && d1.becherPruefen() == true && d1.kaffeePruefen() == true && d1.milchPruefen() == true) /*Kaffee schwarz*/
{
IO.writeln("Sie haben gew�hlt: Kaffee mit Milch und Zucker\n"+ "Der Kaffee kostet " + preisKaffeeMilchZucker + " Cent");
}
else
{
IO.writeln("Bitte Fehler beheben!");
}
break;
case 6: //Service cases
d1.allesAuffuellenaufMAX();
IO.writeln("Depots wurden aufgef�llt");
break;
case 7:
m.muenzenAuffuellenMAX();
IO.writeln("M�nzen wurden aufgef�llt");
break;
case 8:
m.muenzenAuffuellenMAX();
d1.allesAuffuellenaufMAX();
IO.writeln("M�nzen und Depots wurden aufgef�llt");
break;
}
d.textAbbrechen();
t.tasteAbbruch();
if (t.tasteAbbruch() == false)
{
break;
}
else
{
do
{
berechneRestbetrag(m.getKaffeepreis(), m.muenzenEinzahlen(IO.promptAndReadInt("Bitte Münze einwerfen: "))); //Münzen einwerfen
if (a == 0) //Passend gezahlt
{
IO.writeln("Vielen Dank!\nBitte Kaffee entnehmen!");
}
else if (a < 0) // Rückgeld
{
do
{
m.setKaffeepreis(a *(-1));
if(a >= 100 && m.getAnzahl100ct()>0) ////Test ob wir R�ckgeld ausgeben k�nnen!
{
m.setKaffeepreis(a-100);
}
else if (a >= 50 && m.getAnzahl50ct()>0)
{
m.setKaffeepreis(a-50);
}
else if (a >= 20 && m.getAnzahl20ct()>0)
{
m.setKaffeepreis(a-20);
}
else if (a >= 10 && m.getAnzahl10ct()>0)
{
m.setKaffeepreis(a-10);
}
else if (a>= 10 && m.getAnzahl10ct() == 0)
{
int b = m.getKaffeepreis() - a*(-1);
if(b >= 100 && m.getAnzahl100ct()>0) //Zuerst "gro�e" M�nzen
{
m.muenzenAuszahlen(100);
m.setKaffeepreis(b-100);
IO.writeln("100 Cent");
}
else if (b >= 50 && m.getAnzahl50ct()>0)
{
m.muenzenAuszahlen(50);
m.setKaffeepreis(b-50);
IO.writeln("50 Cent");
}
else if (b >= 20 && m.getAnzahl20ct()>0)
{
m.muenzenAuszahlen(20);
m.setKaffeepreis(b-20);
IO.writeln("20 Cent");
}
else if (b >= 10 && m.getAnzahl10ct()>0)
{
m.muenzenAuszahlen(10);
m.setKaffeepreis(b-10);
IO.writeln("10 Cent");
}
a = 0;
}
} while (a > 0);
do
{
m.setKaffeepreis(a *(-1));
if(a >= 100 && m.getAnzahl100ct()>0) ////Zuerst "große" Münzen
{
m.muenzenAuszahlen(100);
m.setKaffeepreis(a-100);
IO.writeln("100 Cent");
}
else if (a >= 50 && m.getAnzahl50ct()>0)
{
m.muenzenAuszahlen(50);
m.setKaffeepreis(a-50);
IO.writeln("50 Cent");
}
else if (a >= 20 && m.getAnzahl20ct()>0)
{
m.muenzenAuszahlen(20);
m.setKaffeepreis(a-20);
IO.writeln("20 Cent");
}
else if (a >= 10 && m.getAnzahl10ct()>0)
{
m.muenzenAuszahlen(10);
m.setKaffeepreis(a-10);
IO.writeln("10 Cent");
}
} while (a > 0);
IO.writeln("Vielen Dank!\nBitte Kaffee entnehmen!");
}
else
{
d.textAbbrechen();
}
if (t.tasteAbbruch()==false) //Geldausgabe bei Abbruch
{
int b = m.getKaffeepreis() - a;
if(b >= 100 && m.getAnzahl100ct()>0) //Zuerst "gro�e" M�nzen
{
m.muenzenAuszahlen(100);
m.setKaffeepreis(b-100);
IO.writeln("100 Cent");
}
else if (b >= 50 && m.getAnzahl50ct()>0)
{
m.muenzenAuszahlen(50);
m.setKaffeepreis(b-50);
IO.writeln("50 Cent");
}
else if (b >= 20 && m.getAnzahl20ct()>0)
{
m.muenzenAuszahlen(20);
m.setKaffeepreis(b-20);
IO.writeln("20 Cent");
}
else if (b >= 10 && m.getAnzahl10ct()>0)
{
m.muenzenAuszahlen(10);
m.setKaffeepreis(b-10);
IO.writeln("10 Cent");
}
break;
}
}
while (a > 0 );
//Ende Geldeingabe TODO test ob geklappt
d.textAbbrechen();
}
}while(t.tasteAbbruch());
}
public static int berechneRestbetrag(int preis, int muenze)
{
m.setKaffeepreis(preis);
if (muenze == 10 || muenze == 20 || muenze == 50 || muenze == 100 || muenze == 200)
{ a = a - muenze;
if (a > 0)
{
IO.writeln("Restbetrag: " + a);
}
else
{
IO.writeln("R�ckgeld: " + a *(-1));
}
}
else
{
IO.writeln("M�nze gibt es nicht!");
}
return a;
}
}
Code:
public class Tastatur2
{
public int tasteAbfragen() //Abfrage der Taste
{
int x = IO.promptAndReadInt(""); //Text daf�r steht nachher in Class Display, nicht in Class Tastatur!
return x;
}
public boolean tasteAbbruch() // Abbrechen
{
boolean b;
String x = IO.promptAndReadString(""); //Text daf�r steht nachher in Class Display, nicht in Class Tastatur! "F�r abbrechen 'j' eingeben!"
if (x.equals("j"))
{
b = false;
return b;
}
else
{
b = true;
return b;
}
}
public Tastatur2()
{
}
}
Code:
public class Display2
{
public void textAnzeigen()
{
IO.writeln("Dr�cken Sie 1 f�r einen Kaffee!"); // Option 1
IO.writeln("Dr�cken Sie 2 f�r einen Kaffee mit Milch!"); // Option 2
IO.writeln("Dr�cken Sie 3 f�r einen Kaffee mit Zucker!"); // Option 3
IO.writeln("Dr�cken Sie 4 f�r einen Kaffee mit Milch und Zucker!"); // Option 4
}
public void textAbbrechen()
{
IO.writeln("F�r abbrechen 'j' eingeben!");
}
public Display2()
{
}
}
Code:
public class Depot2 {
//Attribut
private int
becherEinheiten = 0, //Anzahl der im Depot befindlichen Becher
kaffeeEinheiten = 0, //Menge des im Depot befindlichen Kaffees
wasserEinheiten = 0, //Menge des im Depot befindlichen Wassers
zuckerEinheiten = 0, //Menge des im Depot befindlichen Zuckers
milchEinheiten = 0; //Menge der im Depot befindlichen Milch
//Maximale Mengen
final int MAX_BECHER = 21;
final int MAX_KAFFEE = 19;
final int MAX_WASSER = 11;
final int MAX_ZUCKER = 5;
final int MAX_MILCH = 3;
public String toString()
{
return "Becher: " + becherEinheiten + "\n" +
"Kaffee: " + kaffeeEinheiten + "\n" +
"Wasser: " + wasserEinheiten + "\n" +
"Zucker: " + zuckerEinheiten + "\n" +
"Milch: " + milchEinheiten;
}
// Methode zur Entnahme
public boolean entnahmeKaffeschwarz ()
{
if(becherEinheiten > 0 && wasserEinheiten > 0 && kaffeeEinheiten > 0)
{
becherEinheiten = becherEinheiten - 1;
wasserEinheiten = wasserEinheiten - 1;
kaffeeEinheiten = kaffeeEinheiten - 1;
return true;
}
else
{
System.out.println("Fehler, nicht genügend Zutaten vorhanden. Bitte auff�llen!");
return false;
}
}
public boolean entnahmeKaffeeMitZucker ()
{
if(becherEinheiten > 0 && wasserEinheiten > 0 && kaffeeEinheiten > 0 && zuckerEinheiten > 0)
{
becherEinheiten = becherEinheiten - 1;
wasserEinheiten = wasserEinheiten - 1;
kaffeeEinheiten = kaffeeEinheiten - 1;
zuckerEinheiten = zuckerEinheiten - 1;
return true;
}
else
{
System.out.println("Fehler, nicht genügend Zutaten vorhanden. Bitte auff�llen!");
return false;
}
}
public boolean entnahmeKaffeeMitMilch ()
{
if(becherEinheiten > 0 && wasserEinheiten > 0 && kaffeeEinheiten > 0 && milchEinheiten > 0)
{
becherEinheiten = becherEinheiten - 1;
wasserEinheiten = wasserEinheiten - 1;
kaffeeEinheiten = kaffeeEinheiten - 1;
milchEinheiten = milchEinheiten - 1;
return true;
}
else
{
System.out.println("Fehler, nicht genügend Zutaten vorhanden. Bitte auff�llen!");
return false;
}
}
public boolean entnahmeKaffeeMitMilchUndZucker ()
{
if(becherEinheiten > 0 && wasserEinheiten > 0 && kaffeeEinheiten > 0 && milchEinheiten > 0 && zuckerEinheiten > 0)
{
becherEinheiten = becherEinheiten - 1;
wasserEinheiten = wasserEinheiten - 1;
kaffeeEinheiten = kaffeeEinheiten - 1;
milchEinheiten = milchEinheiten - 1;
zuckerEinheiten = zuckerEinheiten - 1;
return true;
}
else
{
System.out.println("Fehler, nicht genügend Zutaten vorhanden. Bitte auff�llen!");
return false;
}
}
/*
public boolean entnehmeBecher ()
{
if(becherEinheiten > 0)
{
becherEinheiten = becherEinheiten - 1;
return true;
}
else
{
System.out.println("Fehler, Becher sind leer. Bitte auff�llen!");
return false;
}
}
public boolean entnehmeKaffee (int anzahl)
{
if(kaffeeEinheiten >= anzahl)
{
kaffeeEinheiten = kaffeeEinheiten - anzahl;
return true;
}
else
{
System.out.println("Fehler, Kaffee ist leer. Bitte auff�llen!");
return false;
}
}
public boolean entnehmeWasser ()
{
if(wasserEinheiten > 0)
{
wasserEinheiten = wasserEinheiten - 1;
return true;
}
else
{
System.out.println("Fehler, Wasser ist leer. Bitte auff�llen!");
return false;
}
}
public boolean entnehmeZucker (int anzahl)
{
if(zuckerEinheiten >= anzahl)
{
zuckerEinheiten = zuckerEinheiten - anzahl;
return true;
}
else
{
System.out.println("Fehler, Zucker ist leer. Bitte auff�llen!");
return false;
}
}
public boolean entnehmeMilch (int anzahl)
{
if(milchEinheiten >= anzahl)
{
milchEinheiten = milchEinheiten - anzahl;
return true;
}
else
{
System.out.println("Fehler, Milch ist leer. Bitte auff�llen!");
return false;
}
}
*/
//Methode zum Auff�llen
public void becherAuffuellenaufMAX ()
{
becherEinheiten = MAX_BECHER;
}
public void kaffeeAuffuellenaufMAX ()
{
kaffeeEinheiten = MAX_KAFFEE;
}
public void wasserAuffuellenaufMAX ()
{
wasserEinheiten = MAX_WASSER;
}
public void zuckerAuffuellenaufMAX ()
{
zuckerEinheiten = MAX_ZUCKER;
}
public void milchAuffuellenaufMAX ()
{
milchEinheiten = MAX_MILCH;
}
public void allesAuffuellenaufMAX () //Alles auff�llen
{
becherAuffuellenaufMAX ();
kaffeeAuffuellenaufMAX ();
wasserAuffuellenaufMAX ();
zuckerAuffuellenaufMAX ();
milchAuffuellenaufMAX ();
}
//Getters
int getBecher()
{
return becherEinheiten;
}
int getKaffee()
{
return kaffeeEinheiten;
}
int getWasser()
{
return wasserEinheiten;
}
int getZucker()
{
return zuckerEinheiten;
}
int getMilch()
{
return milchEinheiten;
}
// Methoden zum Pr�fen
public boolean wasserPruefen()
{
if (wasserEinheiten == 0)
{
IO.writeln("Wasserdepot leer, bitte auff�llen!");
return false;
}
else
{
return true;
}
}
public boolean becherPruefen()
{
if (becherEinheiten == 0)
{
IO.writeln("Becherdepot leer, bitte auff�llen!");
return false;
}
else
{
return true;
}
}
public boolean kaffeePruefen()
{
if (kaffeeEinheiten == 0)
{
IO.writeln("Kaffeedepot leer, bitte auff�llen!");
return false;
}
else
{
return true;
}
}
public boolean zuckerPruefen()
{
if (zuckerEinheiten == 0)
{
IO.writeln("Zuckerdepot leer, bitte auff�llen!");
return false;
}
else
{
return true;
}
}
public boolean milchPruefen()
{
if (milchEinheiten == 0)
{
IO.writeln("Milchdepot leer, bitte auff�llen!");
return false;
}
else
{
return true;
}
}
public Depot2(int w, int k, int b, int z, int m)
{
wasserEinheiten=w;
kaffeeEinheiten=k;
becherEinheiten=b;
zuckerEinheiten=z;
milchEinheiten=m;
}
}
Code:
public class Muenzwerk2 {
//Klassen-Variablen Initialisierung
public static int eingezahlteMuenzen;
//Instanz-Variablen Initialisierung
private int anzahl10ct = 5;
private int anzahl20ct = 5;
private int anzahl50ct = 5;
private int anzahl100ct = 5;
private int anzahl200ct;
private int kaffeepreis;
private int muenze;
private int eingewMuenzen;
public int getEingewMuenzen() {
return eingewMuenzen;
}
public void setEingewMuenzen(int eingewMuenzen) {
this.eingewMuenzen = eingewMuenzen;
}
//Konstruktor
public Muenzwerk2()
{
}
//getter
public int getAnzahl10ct()
{
return anzahl10ct;
}
public int getAnzahl20ct()
{
return anzahl20ct;
}
public int getAnzahl50ct()
{
return anzahl50ct;
}
public int getAnzahl100ct()
{
return anzahl100ct;
}
public int getAnzahl200ct()
{
return anzahl200ct;
}
//Methoden
// TODO KEIN WIRKLICHER TEST
public boolean anzahlPruefen(){
if (anzahl10ct>=1 && anzahl20ct>=1 && anzahl50ct>=1 && anzahl100ct>=1)
{ return true;}
else
{
IO.writeln("Bitte passend Zahlen. Kein Rückgeld möglich");
return false;
}
}
public int muenzenEinzahlen(int muenzart)
{
if(muenzenPruefen() == false)
{
muenzart = 999;
}
switch(muenzart)
{
case 10:
if(muenzart == 10)
{
anzahl10ct ++;
eingezahlteMuenzen ++;
eingewMuenzen=eingewMuenzen+10;
break;
}
case 20:
if(muenzart == 20)
{
anzahl20ct ++;
eingezahlteMuenzen ++;
eingewMuenzen=eingewMuenzen+20;
break;
}
case 50:
if(muenzart == 50)
{
anzahl50ct ++;
eingezahlteMuenzen ++;
eingewMuenzen=eingewMuenzen+50;
break;
}
case 100:
if(muenzart == 100)
{
anzahl100ct ++;
eingezahlteMuenzen ++;
eingewMuenzen=eingewMuenzen+100;
break;
}
case 200:
if(muenzart == 200)
{
anzahl200ct ++;
eingezahlteMuenzen ++;
eingewMuenzen=eingewMuenzen+200;
break;
}
default:
{
System.out.println("Es werden nur 10 Cent, 20 Cent, 50 Cent, 1 Euro oder 2Euro Stücke angenommen!");
}
}
muenze = muenzart;
return muenze;
}
public void muenzenAuszahlen(int muenzart)
{
switch(muenzart){
case 10:
if(muenzart == 10)
{
if(anzahl10ct > 0)
{
anzahl10ct --;
}
else
{
IO.writeln("Münzen auffüllen!");
}
break;
}
case 20:
if(muenzart == 20)
{
if(anzahl20ct > 0)
{
anzahl20ct --;
}
else
{
IO.writeln("Münzen auffüllen!");
}
break;
}
case 50:
if(muenzart == 50)
{
if(anzahl50ct > 0)
{
anzahl20ct --;
}
else
{
IO.writeln("Münzen auffüllen!");
}
break;
}
case 100:
if(muenzart == 100)
{
if(anzahl100ct > 0)
{
anzahl100ct --;
}
else
{
IO.writeln("Münzen auffüllen!");
}
break;
}
case 200:
if(muenzart == 200)
{
if(anzahl200ct > 0)
{
anzahl200ct --;
}
else
{
IO.writeln("Münzen auffüllen!");
}
break;
}
default:
{
System.out.println("Es werden nur 10 Cent, 20 Cent, 50 Cent, 1 Euro oder 2Euro Stücke angenommen!");
}
}
}
public void muenzenAuffuellenMAX()
{
anzahl10ct = 7;
anzahl20ct = 7;
anzahl50ct = 7;
anzahl100ct = 7;
}
public boolean muenzenPruefen()
{
if(eingezahlteMuenzen == 10)
{
System.out.println("Münze nicht erkannt");
eingezahlteMuenzen=0;
return false;
}
else
{
return true;
}
}
public int getKaffeepreis() {
return kaffeepreis;
}
public void setKaffeepreis(int kaffeepreis) {
this.kaffeepreis = kaffeepreis;
}
}
Zuletzt bearbeitet: