Revizuiți soluția de făcut versus activitatea de provocare
Următoarele exemple ar trebui să utilizeze un do deoarece știți că trebuie să executați blocul de cod cel puțin o dată. De asemenea, puteți utiliza un while pentru a obține același rezultat. Unii dezvoltatori consideră că logica unui while cod devine mai ușor de citit. Dacă acesta este cazul pentru dvs., puteți alege să implementați un while. În acest caz, rețineți că majoritatea compilatoarelor de cod optimizează codul pentru dvs., efectuând conversia instrucțiunii de iterație într-un do-while.
Cod Proiect 1
Următorul cod este o soluție posibilă pentru proiectul de provocare 1 de la unitatea anterioară.
Codul utilizează o do instrucțiune, deoarece blocul de cod trebuie executat cel puțin o dată. De asemenea, puteți utiliza un while pentru a obține același rezultat. Unii dezvoltatori pot simți că logica unui while cod devine mai ușor de citit. Dacă acesta este cazul pentru dvs., puteți alege să implementați aici un while angajament.
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();
Cod Project 2
Următorul cod este o soluție posibilă pentru provocarea 2 de la unitatea anterioară.
Codul utilizează o do instrucțiune, deoarece blocul de cod trebuie executat cel puțin o dată. De asemenea, puteți utiliza un while pentru a obține același rezultat. Unii dezvoltatori pot simți că logica unui while cod devine mai ușor de citit. Dacă acesta este cazul pentru dvs., puteți alege să implementați aici un while angajament.
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();
Cod Proiect 3
Următorul cod este o soluție posibilă pentru provocarea proiectului 3 de la unitatea anterioară.
Codul utilizează o for instrucțiune pentru bucla exterioară, deoarece nu puteți modifica valoarea atribuită unei variabile "iterație de prim plan". Puteți evita acest lucru declarând o variabilă suplimentară de șir în foreach buclă, dar ați adăuga complexitate nedorită la logica de cod. Cu alte cuvinte, utilizarea instrucțiunii foreach (string myString in myStrings) de iterație și încercarea de procesare a variabilei myString generează o eroare de compilare.
Codul utilizează o while instrucțiune pentru bucla internă, deoarece, în funcție de valoarea șirului de date, este posibil ca blocul de cod să nu fie executat (atunci când șirul nu conține un punct). Nu ar trebui să utilizați o do instrucțiune în situațiile în care este posibil ca blocul de iterație să nu fie necesar să fie executat.
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);
}
Dacă aveți succes, felicitări! Dacă ați avut probleme, așteptați să revizuiți soluția și încercați să înțelegeți cum funcționează.