Перегляньте рішення, що потрібно зробити, а також випробуйте дії
Нижче наведено приклади do , тому що ви знаєте, що потрібно виконати блок коду принаймні один раз. Ви також можете використовувати для while досягнення такого ж результату. Деякі розробники вважають, що логіка while коду робить його зручнішим для читання. Якщо це так для вас, ви можете вибрати реалізацію while. У цьому випадку майте на увазі, що більшість компіляторів коду оптимізують код, перетворивши ітераційну інструкцію do-whileна .
Код проекту 1
Наведений нижче код є одним із можливих рішень для завдання проекту 1 із попередньої одиниці.
Код використовує do оператор, оскільки блок коду має виконуватися принаймні один раз. Ви також можете використовувати для while досягнення такого ж результату. Деякі розробники можуть відчувати, що логіка while коду робить його зручнішим для читання. Якщо це так для вас, ви можете впровадити інструкцію while тут.
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();
Код проекту 2
Наведений нижче код є одним із можливих рішень для випробування проекту 2 з попередньої одиниці.
Код використовує do оператор, оскільки блок коду має виконуватися принаймні один раз. Ви також можете використовувати для while досягнення такого ж результату. Деякі розробники можуть відчувати, що логіка while коду робить його зручнішим для читання. Якщо це так для вас, ви можете впровадити інструкцію while тут.
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();
Код Проекту 3
Наведений нижче код є одним із можливих рішень для випробування проекту 3 з попередньої одиниці.
Код використовує for оператор для зовнішнього циклу, оскільки не можна змінити значення, призначене змінній ітерації foreach. Ви можете вирішити цю проблему, оголосивши додаткову змінну рядка в циклі foreach , але тоді ви додаєте небажаної складності до кодової логіки. Іншими словами, якщо використати інструкцію foreach (string myString in myStrings) ітерації та спробувати обробити myString змінну, створюється помилка компіляції.
Код використовує while оператор для внутрішнього циклу, оскільки залежно від значення рядка даних блок коду може не виконуватися (якщо рядок не містить крапку). Інструкцію do не слід використовувати в ситуаціях, коли блок ітерації може не виконуватися.
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);
}
Якщо ви успішні, вітаємо! Якщо у вас виникли проблеми, знайдіть час, щоб переглянути рішення та спробувати зрозуміти, як воно працює.