Projděte si řešení, které se má provést v porovnání s aktivitou výzvy.
Následující příklady by měly používat do , protože víte, že potřebujete spustit blok kódu alespoň jednou. Můžete také použít while k dosažení stejného výsledku. Někteří vývojáři mají pocit, že logika while kódu je čitelnější. Pokud to pro vás platí, můžete se rozhodnout implementovat while. V tomto případě mějte na paměti, že většina kompilátorů kódu optimalizuje váš kód převodem příkazu iterace na .do-while
Kód Projectu 1
Následující kód je jedním z možných řešení pro projekt výzvy 1 z předchozí lekce.
Kód používá příkaz, do protože blok kódu musí být spuštěn alespoň jednou. Můžete také použít while k dosažení stejného výsledku. Někteří vývojáři můžou mít pocit, že logika while kódu je čitelnější. Pokud je to pro vás případ, můžete se rozhodnout, že sem implementujete while příkaz.
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();
Kód Projectu 2
Následující kód je jedním z možných řešení projektu výzvy 2 z předchozí lekce.
Kód používá příkaz, do protože blok kódu musí být spuštěn alespoň jednou. Můžete také použít while k dosažení stejného výsledku. Někteří vývojáři můžou mít pocit, že logika while kódu je čitelnější. Pokud je to pro vás případ, můžete se rozhodnout, že sem implementujete while příkaz.
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();
Kód Projectu 3
Následující kód je jedním z možných řešení pro projekt výzvy 3 z předchozí lekce.
Kód používá for příkaz pro vnější smyčku, protože nelze upravit hodnotu přiřazenou proměnné iterace foreach. Můžete to obejít deklarováním dodatečné řetězcové proměnné uvnitř foreach smyčky, ale pak byste do logiky kódu přidali nežádoucí složitost. Jinými slovy, použití příkazu foreach (string myString in myStrings) iterace a následné pokusu myString o zpracování proměnné generuje chybu kompilace.
Kód používá příkaz while pro vnitřní smyčku, protože blok kódu nemusí být proveden v závislosti na hodnotě datového řetězce (pokud řetězec neobsahuje tečku). Příkaz byste neměli používat do v situacích, kdy nemusí být spuštěn blok iterace.
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);
}
Pokud se vám to podařilo, blahopřejeme! Pokud jste měli potíže, projděte si řešení a zkuste pochopit, jak to funguje.