Прочитать на английском

Просмотрите решение для выполнения и в то время как действие задачи

Завершено

В следующих примерах следует использовать так 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);
}

Если вам удалось справиться с этой задачей, примите наши поздравления! Если у вас возникли проблемы, ознакомьтесь с решением и попробуйте понять, как это работает.