Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ein Programm vorzeitig beenden und wieder an den Anfang springen.
Hallo,
ich baue gerade ein Spiel auf,
Am anfang kann man die Spielfeld größe selbst wählen, SIE DARF ALLERDINGS NICHT GRÖßER ALS 10x10 Felder sein.
Wenn der User jetzt trotzdem beispielsweise 11 eingibt soll ihm eine berichtigende
Anweisung gegeben werden, und das programm soll wieder an den Anfang zurück springen und den Nutzer erneut nach der Zahl fragen.
Ich breche mit System.exit(0) aus dem Programm aus, doch wie funktioniert es, dass das Programm sich danach automatisch neustartet.
Hier mein code schnipsel.
Code:
public static void spielEinrichten(){
Scanner sc = new Scanner(System.in);
System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an. - Maximale Zeilenanzahl: 10");
xKoordinate = sc.nextInt(); //
if (xKoordinate >=10){
System.out.println("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein");
System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten");
System.out.println("Bitte Probieren Sie es gleich nochmal");
System.exit(0);
}
else
System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an. - Maximale Zeilenanzahl: 10");
xKoordinate = sc.nextInt();
System.out.println("Bitte geben Sie die Spaltenanzahle des Spielfeldes an. - Maximale Spaltennanzahl: 10");
yKoordinate = sc.nextInt(); //
if (yKoordinate >=10){
System.out.println ("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein");
System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten");
System.out.println("Probieren Sie es gleich nochmal");
System.exit(-1);
}
else
System.out.println("Bitte geben Sie die Spaltenanzahle des Spielfeldes an. - Maximale Spaltennanzahl: 10");
yKoordinate = sc.nextInt(); //
Wieo abbrechen und neustarten? Kannst es doch in eine Schleife packen:
Java:
do {
// Eingabe nicht korrekt
} while (xKoordinate > 10);
Btw: SIE DARF ALLERDINGS NICHT GRÖßER ALS 10x10 Felder sein. -> if (xKoordinate >=10){
Wenn man 10 eingibt sollte es doch eigentlich noch möglich sein ...
Bitte nicht das Programm schließen und dann neu starten bei einer Fehleingabe!
Das ist extrem schlimm, stell dir vor bei jeder fehlerhaften Eingabe würde windows runter und wieder hochfahren oder dein Browser einfach zugehen.
Entweder machst du es mit einer do-while Schleife wie von Sempah schon angegeben, sauberer wäre es aber wenn du den Benutzer einfach nur Zahlen zwischen 1 und 10 eingeben lässt (was passiert bei negativen Zahlen, das hast du gar nicht abgefangen!), wobei das Abfangen der Eingabe auf der Konsole wohl nicht so einfach ist.
Aber bitte benutze dann eine do-while, weil man muss auch jedesmal die Zeilenanzahl neu eingeben, wenn man eine falsche Spaltenanzahl eingibt.
Ich habe es jetzt mit einer Do-While-Schleife gemacht.
Allerdings musste ich noch break; in Do {} einfügen sonst pinselt er unendlich lange die System.out.print(Befehle); auf die kommandozeile.
Und es ist immernoch nicht perfekt, denn wenn ich beim zweiten mal also nach der Ermahnung trotzdem eine 11 eingebe springt er weiter und gibt schließlich doch das spielfeld aus.
javacode:
Code:
public static void spielEinrichten(){
Scanner sc = new Scanner(System.in);
System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an. - Maximale Zeilenanzahl: 10");
xKoordinate = sc.nextInt();
do{
System.out.println("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein");
System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten");
System.out.println("Bitte Probieren Sie es gleich nochmal");
System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an. - Maximale Zeilenanzahl: 10");
xKoordinate = sc.nextInt();
break;
}
while (xKoordinate != 1-10);
System.out.println("Bitte geben Sie die Spaltenanzahle des Spielfeldes an. - Maximale Spaltennanzahl: 10");
yKoordinate = sc.nextInt(); //
do {
System.out.println ("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein");
System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten");
System.out.println("Probieren Sie es gleich nochmal");
System.out.println("Bitte geben Sie die Spaltenanzahle des Spielfeldes an. - Maximale Spaltennanzahl: 10");
yKoordinate = sc.nextInt();
break;
}
while (yKoordinate != 1-10);
Öööhhhmmm sicher das du mit Schleifen schonmal gearbeitet hast?
Es ist 1. klar das du eine endlosschleife hast denn die aussage "(xKoordinate != 1-10)" sagt nix anderes als "(xKoordinate != -9)" und es ist logisch das wenn du eine Zahl von 1 bis 10 angibst, die niemals -9 ist.
Und ein break ohne vorherige Abfrage bringt gar nichts da du dir die Schleife sparen kannst, er springt dadurch immer aus der Schleife, egal was du eingibst.
Imho wäre es so richtig, wobei du dann nochmal die Texte in den Ausgaben überarbeiten musst (System.out)
Code:
do{
System.out.println("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein");
System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten");
System.out.println("Bitte Probieren Sie es gleich nochmal");
System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an. - Maximale Zeilenanzahl: 10");
xKoordinate = sc.nextInt();
}
while (xKoordinate > 10 || xKoordinate < 1);
Ja ich habe schonmal mit schleifen gearbeitet. Bin aber noch anfänger, seit 5 Wochen dabei!
Habe es jetzt mit einer While - Schleife gelöst, da es so bei mir so nicht geklappt hat.
Code:
public static void spielEinrichten(){
Scanner sc = new Scanner(System.in);
System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an. - Maximale Zeilenanzahl: 10");
xKoordinate = sc.nextInt();
while (xKoordinate > 10){
System.out.println("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein");
System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten");
System.out.println("Bitte Probieren Sie es gleich nochmal");
System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an. - Maximale Zeilenanzahl: 10");
xKoordinate = sc.nextInt();
}
System.out.println("Bitte geben Sie die Spaltenanzahle des Spielfeldes an. - Maximale Spaltennanzahl: 10");
yKoordinate = sc.nextInt(); //
while (yKoordinate > 10){
System.out.println ("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein");
System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten");
System.out.println("Probieren Sie es gleich nochmal");
System.out.println("Bitte geben Sie die Spaltenanzahle des Spielfeldes an. - Maximale Spaltennanzahl: 10");
yKoordinate = sc.nextInt();
}