Frage von sadasdasd21, 62

Java Gäste zähler?

int alter; int i; for(i=1;i<=462;i++); Scanner abfrage = new Scanner (System.in); System.out.println("Wie alt sind Sie?"); alter = abfrage.nextInt();

if (alter>18)
    System.out.println("Alles ist erlaubt");
else if (alter>16)
System.out.println("Sie .");
else if (alter==18)
System.out.println("Sie sind 18 Jahre alt.Es sind grade "+i+" Personen in der disko");
else 
    System.out.println("Sie dürfen nur  tanzen. Es sind grade "+i+" Personen in der disko");

Das Programm soll zusätzlich Gäste zählen aber leider funktioniert das nicht so richtig. . Es gibt immer 463 aus und zählt nicht wirklich.

Antwort
von rmnstr, 10

Wenn du keine geschwungenen Klammern nach Schleifen verwendest wird nur der nächste Befehl in der Schleife ausgeführt.

In deinem Fall ist das lediglich ein ;

for(i=1;i<=462;i++)
;

Das heißt also, deine Schleife macht nichts, außer i zu erhöhen.

So wäre es richtig:

for(i = 1; i <= 462; i++) {
System.out.println("Wie alt sind Sie?");
alter = abfrage.nextInt();

if (alter > 18)
System.out ...
else if (alter == 18)
System.out ...
else if (alter > 16)
System.out ...
else
System.out ...
}


Siehst du übrigens, dass ich die Altersabfrage für genau 18 Jahre (alter == 18) nach oben verschoben habe?
In deinem Code würde die nämlich nie getriggert werden, weil alter > 16 vorher immer true ergibt.

Antwort
von MarcelDavis321, 19

Klammern sind des Rätsels Lösung


Wenn keine Klammern um einen Block sind wird immer nur das erste Statement ausgeführt:



while(i < 1000){

int x = 0;  //wird 1000 ausgeführt

if(a == b){}; //wird  1000 mal ausgeführt

}

######################


while(i < 1000)

int i = 0;  //wird 1000 mal ausgeführt

//Schleife endet hier!!

if(a == b){}; //wird 1 mal ausgeführt



Deine Schleife ist schon lange beendet wenn das System.out.println aufgerufen wird und der Zähler ist somit schon bei 462



Antwort
von Copyyy, 37

Ähm... Was ist denn Scanner? Und wo definierst du "alter"?

Kommentar von sadasdasd21 ,

Mit Scanner fragt man denn Gast wie alt der ist und ganz oben als aller erster ist  int alter;

die antowort von der abfrage ist der wert von alter

Kommentar von Copyyy ,

Oh, da hab ich was überlesen, sry^^ Setz zwischendurch noch ein paar Ausgaben rein und guck, wie sich die Variable verändert bzw. ob sie sich so verändert, wie du willst, um denn zu gucken, wo der Fehler ist.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten