Guten Tag liebe Community,
ich sitze seit gestern an einem Problem, welches ich nicht zu lösen weiß.
Ich schreibe ein Programm, welches eine Eingabe erfordert. Nämlich 1, 2, oder 3. Wird -1 eingegeben soll die Meldung "Falsche Eingabe" erscheinen und wieder gefragt werden 1, 2, oder 3. Leider erscheint die Meldung "Falsche Eingabe" nicht. Wenn ich in der if-Anweisung eine positive Zahl als Abbruchkriterium nehme, dann funktioniert es einwandfrei.
Es geht vor allem um Zeile 122-138 wo sich die if-Abfrage befindet.
Ich hab es schon mit anderen Datentypen wie int, byte und double probiert, half mir aber auch nicht weiter.
Über einen Tipp würde ich mich freuen.
Mit freundlichem Gruß
Jebo
ich sitze seit gestern an einem Problem, welches ich nicht zu lösen weiß.
Ich schreibe ein Programm, welches eine Eingabe erfordert. Nämlich 1, 2, oder 3. Wird -1 eingegeben soll die Meldung "Falsche Eingabe" erscheinen und wieder gefragt werden 1, 2, oder 3. Leider erscheint die Meldung "Falsche Eingabe" nicht. Wenn ich in der if-Anweisung eine positive Zahl als Abbruchkriterium nehme, dann funktioniert es einwandfrei.
Java:
import java.util.Scanner;
class Marmelade
{
// Instanzvariablen
private String inhalt; // Art der Frucht im Glas
private String datum; // Datum des Abfüllens
private int menge; // Menge der Marmelade im Glas
// Konstruktor
public Marmelade( String inhalt, String datum, int menge )
{
this . inhalt = inhalt;
this . datum = datum;
this . menge = menge;
}
// Methoden
public boolean istLeer()
{
return ( menge == 0 );
}
public void ausgeben()
{
System.out.println ( inhalt + " " + datum + " " + menge + " Unzen." );
}
public void auftragen ( int unzen)
{
if ( !istLeer() )
{
if ( unzen <= menge )
{
System.out.println("Auftragen von " + unzen + " Unzen " + inhalt );
menge = menge - unzen;
}
else
{
System.out.println("Auftragen von " + menge + " Unzen " + inhalt );
menge = 0;
}
}
else
System.out.println("Keine Marmelade im Glas!");
}
public int getMenge()
{
return menge;
}
}
class Vorratskammer
{
// Instanzvariablen
private Marmelade glas1;
private Marmelade glas2;
private Marmelade glas3;
private Marmelade glasAusgewaehlt;
// Konstruktor
public Vorratskammer( Marmelade glas1, Marmelade glas2, Marmelade glas3 )
{
this . glas1 = glas1;
this . glas2 = glas2;
this . glas3 = glas3;
glasAusgewaehlt = null;
}
// Methoden
public void ausgeben()
{
System.out.print("1: "); glas1 . ausgeben();
System.out.print("2: "); glas2 . ausgeben();
System.out.print("3: "); glas3 . ausgeben();
}
// wir setzen voraus, dass der Anwender eine richtige Auswahl trifft, 1, 2, oder 3
public void auswaehlen( double glasNummer )
{
if ( glasNummer == 1 )
glasAusgewaehlt = glas1;
else if ( glasNummer == 2 )
glasAusgewaehlt = glas2;
else
glasAusgewaehlt = glas3;
}
// Auftragen der ausgewählten Marmelade
public void auftragen( int unzen )
{
glasAusgewaehlt . auftragen( unzen );
}
}
class VorratskammerTester
{
public static void main ( String[] args )
{
Scanner sc = new Scanner(System.in);
Marmelade stachelbeer = new Marmelade( "Stachelbeer", "04.07.09", 12 );
Marmelade erdbeer = new Marmelade( "Erdbeer", "30.09.10", 8 );
Marmelade aprikosen = new Marmelade( "Aprikosen", "31.10.10", 3 );
Vorratskammer vorrat = new Vorratskammer( stachelbeer, erdbeer, aprikosen );
vorrat.ausgeben();
int zaehler = 1;
while(zaehler >= 1)
{
System.out.println("Treffen Sie eine Auswahl (1, 2 oder 3) Exit -1");
double glas = sc.nextDouble();
vorrat.auswaehlen(glas);
for (int j = 0; j <= glas;j++)
{
if (glas == -1)
{
System.out.println("Falsche Eingabe! ");
System.out.println("Treffen Sie eine Auswahl (1, 2 oder 3) Exit -1");
glas = sc.nextDouble();
vorrat.auswaehlen(glas);
}
else
{
System.out.println("Geben Sie die Menge ein die aufgetragen werden soll: ");
int benötigteMenge = sc.nextInt();
vorrat.auftragen(benötigteMenge);
vorrat.ausgeben();
}
zaehler ++;
}
}
}
}
Ich hab es schon mit anderen Datentypen wie int, byte und double probiert, half mir aber auch nicht weiter.
Über einen Tipp würde ich mich freuen.
Mit freundlichem Gruß
Jebo