Do while-Schleife, um zu zeigen, ein Menü
Erstellt habe ich mein Menü mit der do~while(true); aber jedes mal, wenn der Benutzer eine Nummer einzufügen, anstatt zu laufen das Programm, zeigt es das Menü wieder! was denkst du?
//meine main-Methode
public static void main(String[] args) {
DataReader reader = new DataReader(); //The reader is used to read data from a file
//Load data from the file
if(reader.loadData(args[0])) { //The filename is entered using a command-line argument
vehicles= reader.getVehicleData(); //Store the arrays of Vehicle
//Display how many shapes were read from the file
System.out.println("Successfully loaded " + vehicles[0].getCount() +
" vehicles from the selected data file!");
displayMenu();
}
}
//dispaly Menü Methode
private static void displayMenu() {
Scanner input = new Scanner(System.in);
do {
System.out.println("\n\n Car Sales Menu");
System.out.println("--------------------------------------");
System.out.println("1 - Sort vehicles by owner's Last Name");
System.out.println("2 - Sort vehicles by vehicle Model");
System.out.println("3 - Sort vehicles by vehicle Cost\n");
System.out.println("4 - List All Vehicles");
System.out.println("5 - List All Cars");
System.out.println("6 - List American Cars Only (Formal)");
System.out.println("7 - List Foreign Cars only (Formal)");
System.out.println("8 - List All Trucks");
System.out.println("9 - List All Bicycles");
System.out.print("\nSelect a Menu Option: ");
getInput(input.next()); //Get user input from the keyboard
}
while(true); //Display the menu until the user closes the program
}
//getInput-Methode
private static void getInput(String input) {
switch(Convert.toInteger(input)) {
case 1: //Sort Vehicles by Owner's Last Name
Array.sortByOwnerName(vehicles);
break;
case 2: //Sort Vehicles by Vehicle Make & Model
Array.sortByVehicleMakeModel(vehicles);
break;
case 3: //Sort Vehicles by Vehicle Cost
Array.sortByVehicleCost(vehicles);
break;
case 4: //List All Vehicles
displayVehicleData(0);
break;
default:
System.out.print("The entered value is unrecognized!");
break;
}
}
Wo ist dein
ich habe gerade aktualisiert meine Frage.
Ihre getInput () - Methode keinen Sinn. Was versuchen Sie zu tun?
Ich würde vorschlagen, Sie zu re-design Ihrer Anwendung. Derzeit ist es sehr Durcheinander. Sie interagieren mit dem Benutzer in alle Teile des Codes, das macht es mehr sperrig und hässlich. Und auch es gibt als solche keine code-Wiederverwendung.
Ich werde Neugestaltung meinem code und umbuchen meine Antwort tonite. danke
getInput()
Methode?ich habe gerade aktualisiert meine Frage.
Ihre getInput () - Methode keinen Sinn. Was versuchen Sie zu tun?
Ich würde vorschlagen, Sie zu re-design Ihrer Anwendung. Derzeit ist es sehr Durcheinander. Sie interagieren mit dem Benutzer in alle Teile des Codes, das macht es mehr sperrig und hässlich. Und auch es gibt als solche keine code-Wiederverwendung.
Ich werde Neugestaltung meinem code und umbuchen meine Antwort tonite. danke
InformationsquelleAutor Dani | 2012-11-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil Sie
while(true);
bedeutet dies, dass das Menü es wird in einer Endlosschleife, bis ein break zu nennen.Versuchen, etwas zu tun wie:
Können Sie Schalter zu verarbeiten die Eingabe, und je nach input-tun der jeweiligen Aktion.
Wenn Sie false ist, bedeutet, die Schleife wird nur einmal ausgeführt.
Versuchen Sie, zu verwenden, wechseln Sie zu verarbeiten die Eingabe, die Sie einfügen
danke @dreamcrash, aber ich habe eine andere Methode, die ich haben diesen Schalter stamenet und ich nehme an, dass ich schon von hier aus??
ja, man kann auch einfach nur nutzen, wenn und anderes. e.g : if (input == 1) {//Tue etwas; break;}
InformationsquelleAutor dreamcrash
while true
bedeutet nicht, dass genau die Sache, die Sie geschrieben haben, im Kommentar. Sie müssen hinzufügen einige andere Bedingung in deiner while-Schleife, um zu überprüfen, dass diese Bedingung. Diese Bedingung sollte auf derinput
Sie Lesen die Benutzer.Für e.g, so etwas wie dieses. Beachten Sie, dass dieser möglicherweise nicht vollständig lösen Ihr problem, wie es scheint einige andere Fragen, auch mit Ihrem code: -
Und dann die
userInput
wieder in Ihremain()
Methode. Dort müssten Sie speichern den Rückgabewert in einigen lokalen variable.InformationsquelleAutor Rohit Jain
Weil deine while-Schleife ist
while(true)
es wird immer Schleife, bis das Programm gewaltsam gebrochen. Ohne den Inhalt IhrergetInput()
Funktion, alles, was gesagt werden kann ist, dass die Schleife nie enden wird.Werden Sie brauchen, um Ihre Eingabe des Benutzers, entweder in der
getInput()
- Methode oder nach der Verwendung, und dann bedingt ausbrechen derwhile(true)
wenn bestimmte Kriterien erfüllt sind.InformationsquelleAutor asteri
Vorausgesetzt, Ihr
getInput
Methode tut, was es sagt, es tut, haben Sie nicht wirklich etwas gemacht, durch Ihre Eingabe, sobald es gelesen wurde.So, wenn der Benutzer einen Wert eingibt, wird das Programm liest den Wert, gerne ignoriert, und dann läuft das Menü wieder.
InformationsquelleAutor ose