2016-04-04 6 views
0

Mein Programm erlaubt es dem Benutzer grundsätzlich Noten (Elemente) einzugeben, die in einem Notenbuch (Array) gespeichert sind. Der Benutzer hat auch die Möglichkeit, die Noten (Elemente) im Notenbuch (Array) zu ändern.JAVA Reorganisieren der While-Schleife im Array, wenn Benutzereingaben berücksichtigt werden.

Mein Problem ist, dass sobald die While-Schleife Schleifen und der Benutzer aufgefordert wird "Mehr Änderungen vornehmen? Geben Sie Ja oder Nein" Wenn ich ja gebe, dann der Benutzer gefragt, welche Klasse zu ändern, darf die Note zu ersetzen und die modifizierten Notenbuchdrucke. Wenn ich jedoch "Nein" eingebe, wird nur das Notenbuch gedruckt. Gibt es eine Möglichkeit, das Programm zu drucken "Auf Wiedersehen!" (signalisiert das Ende des Programms), wenn der Benutzer nein eingibt? Ich glaube, ich soll meinen Code reorganisieren und eine while-Schleife mit boolean = false setzen? Aber ich bin nicht sicher, wie man anfängt ...

Jede Hilfe würde sehr geschätzt werden. Vielen Dank.

System.out.println("Make changes? Enter Yes or No"); 
    String makeChanges = input.next(); 



    if (makeChanges.equals("no")) { 

     System.out.println("Good bye!"); 
    } 


    while (makeChanges.equalsIgnoreCase("Yes")) { 
     // Ask user if what grade they would like to change 

     //int index = NumberReader.readPositiveInt(input, "Enter the index of the grade to be changed: (1 to " + grades + ") : ", "Invalid index input", index); 

     int index = NumberReader.readCappedPositiveInt(input, "Enter the index of the grade to be changed: (1 to " + grades + ") : ", "Invalid index input", numOfGrades); 

     System.out.println("Enter grade (limit to two decimal places)" + ": "); 
     // offset the index by one 
     mogrades[index - 1] = NumberReader.readPositiveDouble(input, "Enter grade " + index + " :", 
       "Invalid data entered"); 

     System.out.println("The Grade book contains: "); 

     printArray(mogrades); 

     System.out.println("Make more changes? Enter Yes or No"); 

     makeChanges = input.next(); 

     System.out.println(makeChanges); 

     System.out.println("The Grade book contains: "); 

     printArray(mogrades); 
    } 
} 

Antwort

0

Break-Anweisungen werden zum Beenden von Schleifen verwendet. Sie könnten dies in der while-Schleife versuchen:

if (makeChanges.equalsIgnoreCase("No")) { 
    System.out.println("Good Bye!"); 
    break; 
} 

Wenn Sie das gesamte Programm beenden möchten, verwenden Sie System.exit (0);

if (makeChanges.equalsIgnoreCase("No")) { 
    System.out.println("Good Bye!"); 
    System.exit(0); 
} 

Hier ist ein einfaches Programm demonstriert, wie dies funktionieren würde:

import java.util.Scanner; 

public class Simple { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 

     String makeChanges = "Yes"; 

     while (makeChanges.equalsIgnoreCase("Yes")) { 
      System.out.println("Make more changes? Enter Yes or No:"); 
      makeChanges = input.next(); 
      if (makeChanges.equalsIgnoreCase("No")) { 
       System.out.println("Good Bye!"); 
       System.exit(0); 
      } 
     } 
    } 
} 

Und hier ist der Ausgang von der Kommandozeile:

[email protected]: Stackoverflow $ javac Simple.java

[email protected]: StackOverflow $ java Einfach

Machen Sie mehr Änderungen s? Geben Sie Ja oder Nein:

Ja

weitere Änderungen vornehmen? Geben Sie Ja oder Nein:

Ja

weitere Änderungen vornehmen? Geben Sie Ja oder Nein:

Kein

Good bye!

+0

Es beendet das Programm. Es liest jedoch nicht den "Auf Wiedersehen!" Botschaft. Ich habe es in die While-Schleife nach makeChanges = input.next(); – Coco

+0

Können Sie Ihre Änderungen erneut posten, damit ich den neuen Code sehen kann? Es sollte "Auf Wiedersehen!" Angezeigt werden und dann beendet werden, wenn Sie den oben eingegebenen Code kopieren und einfügen. –

+0

können Sie nicht auch 'return;' verwenden, um das Programm zu beenden? –

Verwandte Themen