Neustart While-Schleife nach false boolean in Java
Mache ich eine Zuweisung für die Schule, der von uns verlangt, um die größten zehn Nummern. Die zahlen zwischen 0-9. Ich glaube, ich bekam das Teil nach unten. Mein problem ist, ich bin versucht, fügen Sie eine zusätzliche Funktion, die nicht erforderlich für die Abtretung mitteilt. Ich werde versuchen, die Schleife komplett neu starten, nachdem Sie die Boolesche Aussage, die falsch ist und gibt eine Fehlermeldung aus. Nachdem ich die ungültigen Wert, gibt es die Fehlermeldung, aber nachdem ich "ok" drücken geht es auf die nächste Zahl. Ich will es starten wieder am Anfang der Schleife.
Hier der code:
package Largest;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class LargestMain {
public static void main(String[] args) {
int number = 0;
String numStr = "";
int []myArray = new int[10];
int count = 1;
int largest = 0;
boolean valid = false;
while(valid == true); { //Loop to check validity
for(int i = 0; i < myArray.length; i++) {
myArray[i] = i + 1;
numStr = JOptionPane.showInputDialog("Please enter number " + count++ + ":");
number = Integer.parseInt(numStr); //Converts string value to integer
if(number >= largest) {
largest = number;
}
//If-Else if statements checks if values entered are equal to 0-9
if(number >= 0 && number <= 9) {
valid = true;
}
else if ((!(number >= 0 && number <= 9))) {
valid = false;
}
if (valid == false) {
JOptionPane.showMessageDialog(null, "INVALID INPUT...Try Again!!!", "Results", JOptionPane.YES_OPTION);
continue;
}
}
JOptionPane.showMessageDialog(null, "The Largest Number Is: " + largest, "Results", JOptionPane.PLAIN_MESSAGE);
}
}
}
Konnte ich nur am Ende der Schleife hier, indem Sie zurück:
if (valid == false) {
JOptionPane.showMessageDialog(null, "INVALID INPUT...Try Again!!!", "Results", JOptionPane.YES_OPTION);
return;
}
Ich nur wirklich lernen möchten, starten Sie die Schleife von Anfang an. Ich Suche versucht, verschiedene Themen, aber keiner hat mir geholfen mein problem zu lösen. Vielen Dank für die Hilfe im Voraus!
- Die
continue
keyword? - hinzufügen von anderen, während die Verpackung Ihrer inneren, während
- Poste es als Antwort. @KinGSwisser
while(valid == true)
dargestellt werden kann, wiewhile(valid)
. Die überprüfung, wenn der boolean false ist würde wie folgt Aussehen:while(!valid)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da du ein Anfänger bist, und versucht zu lernen, habe ich ein review von code und anbei einige Kommentare, die Ihnen helfen könnten. Ich habe geschrieben aktualisierten code unten.
Erklärungen: sollten Sie eine variable deklarieren, die in der innersten Schließung erfordert. Außer
largest
alle anderen können gehen Sie in derfor
.Ihre array-Variablen nicht sinnvoll zu haben. Seit dem sind Sie behalten den überblick über die größten, wie Sie gehen und es nicht zu finden am Ende.
Kontrolle: Ihre
/loop to check validity/
muss streng sein, um die input-Teil, nicht Ihr ganzes Programm, so können Sie wiederholen Sie nur die input-Anweisungen, bis Sie zufrieden sind.Neu zu starten, eine Schleife, verwenden Sie die
continue
Schlüsselwort.continue
überspringen, um die nächste Schleife iteration.Bei der Verwendung einer while-Schleife, es wird einfach neu starten, die Schleife, da die Schleife noch nicht zu Ende, bis
valid
wahr ist. Bei der Verwendung einer for-Schleife, itll fahren Sie mit der nächsten iteration (also wenn du derzeit auf index 5 und verwenden Sie weiter, es werde bewegen auf index 6 statt bleiben bei 5).Für verschachtelte Schleifen, beschriften Sie die Schleife angeben, welche Schleife die Anweisung:
Auch, keine Notwendigkeit für
== true
bei der Kontrolle eines booleschen Wert zurück. Es konnte dargestellt werden, wieAls für die überprüfung auf falsche,
valid == false
, die Sie verwenden würden,char
und es wird benutzt, um zu überprüfen, ob 2 Referenzvariablen auf das gleiche Objekt zeigen. Die Art und Weise Sie tun es ist in Ordnung, es gibt einfach keine Notwendigkeit für Sie,Können Sie ein markiertes weiter:
Sehen die Dokumentation für mehr details.
UPDATE: Auch... es gibt keine Notwendigkeit für die Bedingung im else-Teil des if/else-Anweisung. Nur tun, eine
else{ valid=false }
wäre äquivalent zu dem, was Sie jetzt gerade tun. Eine andere option wäre, um es zu vereinfachen noch weiter und überspringen der if/else-Teil gegenseitig und müssen nur:Schreiben Sie eine rekursive Funktion, d.h. eine Funktion, die sich selbst aufruft.
Ihre Logik ist fast richtig, aber Sie sollten nicht Schleifen über
valid
in der äußeren Schleife. Denken Sie daran, Sie möchten, stoppen Sie das innere - Schleife, wenn eine Eingabe ungültig ist. Normalerweise wird die äußere Schleife würde dem Benutzer eine option, um das Programm zu beenden.So zum Beispiel: