Überprüfen der Lösung zur Aufgabe zu den Unterschieden zwischen „do“ und „while“
In den folgenden Beispielen sollte do verwendet werden, da Sie wissen, dass Sie den Codeblock mindestens einmal ausführen müssen. Sie KÖNNEN auch while verwenden, um das gleiche Ergebnis zu erzielen. Es wird durchaus die Meinung vertreten, dass die Logik von while den Code besser lesbar macht. Wenn dies für Sie der Fall ist, können Sie while implementieren. Beachten Sie in diesem Fall, dass die meisten Codecompiler Ihren Code für Sie optimieren, indem sie die Iterationsanweisung in do-while konvertieren.
Projekt 1: Code
Der folgende Code stellt eine mögliche Lösung für die Problemstellung in Projekt 1 der vorherigen Lerneinheit dar.
Der Code verwendet eine do-Anweisung, da der Codeblock mindestens einmal ausgeführt werden muss. Sie KÖNNEN auch while verwenden, um das gleiche Ergebnis zu erzielen. Es wird durchaus die Meinung vertreten, dass die Logik von while den Code besser lesbar macht. Wenn dies für Sie der Fall ist, können Sie hier eine while-Anweisung implementieren.
string? readResult;
string valueEntered = "";
int numValue = 0;
bool validNumber = false;
Console.WriteLine("Enter an integer value between 5 and 10");
do
{
readResult = Console.ReadLine();
if (readResult != null)
{
valueEntered = readResult;
}
validNumber = int.TryParse(valueEntered, out numValue);
if (validNumber == true)
{
if (numValue <= 5 || numValue >= 10)
{
validNumber = false;
Console.WriteLine($"You entered {numValue}. Please enter a number between 5 and 10.");
}
}
else
{
Console.WriteLine("Sorry, you entered an invalid number, please try again");
}
} while (validNumber == false);
Console.WriteLine($"Your input value ({numValue}) has been accepted.");
readResult = Console.ReadLine();
Projekt 2 Code
Der folgende Code stellt eine mögliche Lösung für die Problemstellung in Projekt 2 der vorherigen Lerneinheit dar.
Der Code verwendet eine do-Anweisung, da der Codeblock mindestens einmal ausgeführt werden muss. Sie KÖNNEN auch while verwenden, um das gleiche Ergebnis zu erzielen. Es wird durchaus die Meinung vertreten, dass die Logik von while den Code besser lesbar macht. Wenn dies für Sie der Fall ist, können Sie hier eine while-Anweisung implementieren.
string? readResult;
string roleName = "";
bool validEntry = false;
do
{
Console.WriteLine("Enter your role name (Administrator, Manager, or User)");
readResult = Console.ReadLine();
if (readResult != null)
{
roleName = readResult.Trim();
}
if (roleName.ToLower() == "administrator" || roleName.ToLower() == "manager" || roleName.ToLower() == "user")
{
validEntry = true;
}
else
{
Console.Write($"The role name that you entered, \"{roleName}\" is not valid. ");
}
} while (validEntry == false);
Console.WriteLine($"Your input value ({roleName}) has been accepted.");
readResult = Console.ReadLine();
Projekt 3: Code
Der folgende Code stellt eine mögliche Lösung für die Problemstellung in Projekt 3 der vorherigen Lerneinheit dar.
Der Code verwendet eine for-Anweisung für die äußere Schleife, da Sie den einer „foreach-Iterationsvariablen“ zugewiesenen Wert nicht ändern können. Sie könnten dies umgehen, indem Sie eine zusätzliche Zeichenfolgenvariable innerhalb der foreach-Schleife deklarieren, aber dann würden Sie Ihrer Codelogik unnötig verkomplizieren. Anders ausgedrückt: Wenn Sie die Iterationsanweisung foreach (string myString in myStrings) verwenden und dann versuchen, die myString-Variable zu verarbeiten, wird ein Kompilierungsfehler generiert.
Der Code verwendet eine while-Anweisung für die innere Schleife, da der Codeblock abhängig vom Wert der Datenzeichenfolge möglicherweise nicht ausgeführt wird (wenn die Zeichenfolge keinen Punkt enthält). Sie sollten keine do-Anweisung in Situationen verwenden, in denen der Iterationsblock möglicherweise nicht ausgeführt werden muss.
string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };
int stringsCount = myStrings.Length;
string myString = "";
int periodLocation = 0;
for (int i = 0; i < stringsCount; i++)
{
myString = myStrings[i];
periodLocation = myString.IndexOf(".");
string mySentence;
// extract sentences from each string and display them one at a time
while (periodLocation != -1)
{
// first sentence is the string value to the left of the period location
mySentence = myString.Remove(periodLocation);
// the remainder of myString is the string value to the right of the location
myString = myString.Substring(periodLocation + 1);
// remove any leading white-space from myString
myString = myString.TrimStart();
// update the comma location and increment the counter
periodLocation = myString.IndexOf(".");
Console.WriteLine(mySentence);
}
mySentence = myString.Trim();
Console.WriteLine(mySentence);
}
Wenn Sie erfolgreich sind, herzlichen Glückwunsch! Wenn Sie Probleme hatten, nehmen Sie sich die Zeit, die Lösung zu überprüfen und zu verstehen, wie sie funktioniert.