Просмотрите решение для выполнения и в то время как действие задачи
В следующих примерах следует использовать так do
как вы знаете, что необходимо выполнить блок кода по крайней мере один раз. Можно также использовать для while
достижения того же результата. Некоторые разработчики считают, что логика while
кода делает код более читаемым. Если это так, можно выбрать реализацию while
. В этом случае следует учитывать, что большинство компиляторов кода оптимизируют код, преобразовав инструкцию итерации в a do-while
.
Код Project 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();
Код Project 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();
Код Project 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);
}
Если вам удалось справиться с этой задачей, примите наши поздравления! Если у вас возникли проблемы, ознакомьтесь с решением и попробуйте понять, как это работает.