Kann mir jemand sagen, wie der Code innerhalb der while(**this code here**){//rest of the code}
funktioniert. Ich verstehe, wenn es innerhalb der {} war, aber es ist in der Bedingung und seine Schleife, bis es erfolgreich eine Zahl analysiert. Wie funktioniert das ?Ausführen von Code innerhalb der while Ausdruckanweisung
Antwort
int.TryParse
gibt true zurück, wenn sie erfolgreich die Zeichenfolge analysiert es aus Console.ReadLine()
bekommen. Die !
vor ihm bedeutet, den Booleschen Wert von int.TryParse
zurück umkehren, so dass die while
führt den Code in dem Pars, und wenn int.TryParse
false zurück, wird das falsch zu einem true
umgekehrt und die während führt wieder - und immer wieder , bis int.TryParse
Wahr zurückgibt. "While executs" bedeutet, dass der Code in den Parens zuerst ausgeführt wird. Wenn das Ergebnis true
ist, wird der while-while ebenfalls ausgeführt.
Hier ist eine andere Möglichkeit, den gleichen Code zu schreiben. Es ist ein wenig weniger kompakt, aber könnte einfacher sein, zu folgen:
int VillainId = -1;
bool parseOK = false;
do
{
Console.Write("Enter VillainId: ");
parseOK = int.TryParse(Console.ReadLine(), out VillainId);
if (!parseOK)
{
Console.WriteLine("You need to enter a valid Villain Id!");
}
} while (! parseOK);
int.TryParse()
kehrt true
, wenn die Konvertierung erfolgreich war und die !
(logical negation operator) invertiert den boolean
Wert in seiner rechten Seite (!true
ist gleich zu false
).
Die Bedingung in while
wird jede Schleife ausgewertet, so, jede ungültige Eingabe des Blockcode in while()
ausgeführt.
Die Strömung ist, im Grunde:
Console.Write("Enter VillainId: ");
// asks to user input
while (!int.TryParse(Console.ReadLine(), out VillainId))
// while the conversion is not successfull
{
Console.WriteLine("You need to enter a valid Villain Id!");
Console.Write("Enter VillainId: ");
// asks for user to input valid data
}
, dass ich verstehe, was mich verwirrt, ist die While-Schleife führen Sie die try.parse jedes Mal, wenn es für die Bedingung zu überprüfen? –
@StoyanGrigorov Führen Sie den Code aus und finden Sie es selbst heraus. – Servy
Nachdem ich Ed Plunketts Kommentare gelesen habe, verstehe ich jetzt, wie es klar funktioniert. Danke für die Eingabe :) –
- 1. While-Schleife innerhalb der While-Schleife JavaScript
- 2. Ausführen von geschachtelten 'while' Schleifen in Versprechen
- 3. Variabler Bereich innerhalb der While-Schleife
- 4. Ausführen von mongoimport innerhalb von Code mit Javascript/Node.js
- 5. GM_xmlhttpRequest innerhalb WHILE Schleife
- 6. Eingabefunktion innerhalb While-Schleife
- 7. Ausführen von PHP CURL in While-Schleife
- 8. Plain While Bildschirm beim Ausführen der Anwendung
- 9. elem.style.height nicht ausgelöst innerhalb der while-Schleife
- 10. While Loop innerhalb While (Java) Battleship Game
- 11. Erweiterte Switch-Anweisung innerhalb der While-Schleife?
- 12. SQL-Anweisung innerhalb der While-Schleife PHP
- 13. Mysqli While-Schleife: Variablen innerhalb von HTML
- 14. kleine Code-Redundanz innerhalb while-Schleifen (nicht sauber fühlen)
- 15. Exit Bash-Skript innerhalb der While-Schleife
- 16. Bash: zwei Schleifen innerhalb der While-Schleife
- 17. Warten auf Mausklick innerhalb von While Loop
- 18. Wie man Daten von der While-Schleife innerhalb einer While-Schleife holt
- 19. Wenn innerhalb einer while-Schleife
- 20. TSQL - While-Schleife innerhalb auswählen?
- 21. PySpark: Drucken auf Terminal innerhalb While-Schleife
- 22. Initialing Pthreads innerhalb While-Schleife
- 23. außerhalb der while-Schleife deklarierte Variablen innerhalb der while-Schleife in scala nicht erreichbar
- 24. For-Schleife (innerhalb While-Schleife) wird ignoriert
- 25. Pipe innerhalb einer While-Schleife
- 26. Ausführen von Java/Scala-Code von R
- 27. Ausführen von JavaScript innerhalb modalen Dialogs
- 28. ANDROID - While-Schleife innerhalb Thread
- 29. while-Schleife innerhalb eines Arrays
- 30. Warum zeigt die while-Schleife nach der ersten Iteration innerhalb der while-Schleife kein Ergebnis?
'int.TryParse' true zurück, wenn es erfolgreich den String parst es aus Console.ReadLine bekommen(). Das '!' Davor bedeutet, das Bool umzukehren, also führt das 'while' den Code in den Parens aus und wenn' int.TryParse' false zurückgibt, wird das 'while' erneut ausgeführt - und immer wieder, bis 'int.TryParse' gibt true zurück. –
also, wenn ich richtig verstehe, wenn es falsch ist, tut es die Arbeit in der {} dann noch einmal und damit meinst du, es läuft die ganze try.parse wieder und wenn erfolgreich out der int und zurück wahr? –
Das ist richtig, jedes Mal, wenn es wieder läuft, ruft es 'Console.ReadLine()' noch einmal für neue Eingabe auf, übergibt das an 'int.TryParse()', das versucht, den neuen Wert usw. bis zum Parsen zu analysieren ist erfolgreich und bricht aus der Schleife aus. Eine [do/while-Schleife] (https://msdn.microsoft.com/en-us/library/370s1zax.aspx?f=255&MSPPError=-2147217396) ist eine andere Möglichkeit, um diesen Code zu schreiben, und möglicherweise einfacher zu bekommen Kopf herum. –