Gennemse den løsning, du skal udføre i forhold til udfordringens aktivitet
I følgende eksempler skal du bruge en do , fordi du ved, at du skal udføre kodeblokken mindst én gang. Du kan også bruge en while til at opnå det samme resultat. Nogle udviklere føler, at logikken i en while gør koden mere læsevenlig. Hvis det er tilfældet for dig, kan du vælge at implementere en while. I dette tilfælde skal du være opmærksom på, at de fleste kodekompilere optimerer din kode for dig ved at konvertere gentagelsessætningen til en do-while.
Projekt 1-kode
Følgende kode er en mulig løsning for udfordringsprojekt 1 fra den forrige enhed.
Koden bruger en do sætning, fordi kodeblokken skal udføres mindst én gang. Du kan også bruge en while til at opnå det samme resultat. Nogle udviklere kan føle, at logikken i en while gør koden mere læsevenlig. Hvis det er tilfældet for dig, kan du vælge at implementere en while sætning her.
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();
Project 2-kode
Følgende kode er en mulig løsning for udfordringsprojekt 2 fra den forrige enhed.
Koden bruger en do sætning, fordi kodeblokken skal udføres mindst én gang. Du kan også bruge en while til at opnå det samme resultat. Nogle udviklere kan føle, at logikken i en while gør koden mere læsevenlig. Hvis det er tilfældet for dig, kan du vælge at implementere en while sætning her.
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();
Project 3-kode
Følgende kode er en mulig løsning for udfordringsprojekt 3 fra den forrige enhed.
Koden bruger en for sætning til den ydre løkke, fordi du ikke kan ændre den værdi, der er tildelt en "forhver gentagelsesvariabel". Du kan løse dette problem ved at erklære en ekstra strengvariabel i løkken foreach , men så vil du føje uønsket kompleksitet til din kodelogik. Det vil sige, at hvis du bruger gentagelsessætningen foreach (string myString in myStrings) og derefter forsøger at behandle variablen myString , genereres der en kompileringsfejl.
Koden bruger en while sætning til den indre løkke, fordi kodeblokken, afhængigt af værdien af datastrengen, muligvis ikke udføres (når strengen ikke indeholder et punktum). Du bør ikke bruge en do sætning i situationer, hvor gentagelsesblokken muligvis ikke behøver at blive udført.
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);
}
Tillykke, hvis du har succes! Hvis du har haft problemer, kan du tage dig tid til at gennemse løsningen og prøve at forstå, hvordan den fungerer.