Amir Hossein Hmd Ответов: 3

Где же моя ошибка? (Цикл Do-while)


Привет, ребята, (я новичок :) я определил переменную (строку = userSecondInput) В делать-цикл while ("выполнить"), но я не могу использовать переменную в "а"! почему? :(
пожалуйста, помогите мне : (я

Что я уже пробовал:

Console.WriteLine("Please Enter Your name: ");
string userInput = Console.ReadLine();
if (string.IsNullOrEmpty(userInput))
{
    do
    {
        Console.WriteLine("invalid value! Please Enter Your name: ");
        string userSecondInput = Console.ReadLine();
    } while (userSecondInput == "");
}
Console.WriteLine("welcome " + userInput);
Console.ReadKey();

Patrice T

Определите: "но я не могу использовать переменную в "while"!"
В чем проблема?

3 Ответов

Рейтинг:
2

F-ES Sitecore

Это называется "сфера действия". Когда вы определяете переменную внутри секции фигурных скобок ({... }) тогда он не виден за пределами этих скобок.

do
{
    Console.WriteLine("invalid value! Please Enter Your name: ");
    string userSecondInput = Console.ReadLine(); // defined here
} while (userSecondInput == ""); //can't be seen here as outside of the brackets it is defined in


Сделайте что-нибудь вроде

Console.WriteLine("Please Enter Your name: ");
string userInput = Console.ReadLine();
string userSecondInput = null;
if (string.IsNullOrEmpty(userInput))
{
    do
    {
        Console.WriteLine("invalid value! Please Enter Your name: ");
        userSecondInput = Console.ReadLine();
    } while (userSecondInput == "");
}


Philippe Mori

Используйте цикл while вместо do while здесь (и одну переменную).

Рейтинг:
2

Karthik_Mahalingam

Нет необходимости создавать переменную внутри цикла, вы должны использовать существующую.

static void Main(string[] args)
        {
            Console.WriteLine("Please Enter Your name: ");
            string userInput = Console.ReadLine();
            if (string.IsNullOrEmpty(userInput))
            {
                do
                {
                    Console.WriteLine("invalid value! Please Enter Your name: ");
                      userInput = Console.ReadLine();
                } while (userInput == "");
            }
            Console.WriteLine("welcome " + userInput);
            Console.ReadKey();
        }


Philippe Mori

Использовать цикл while вместо того, чтобы сделать в то время как здесь.

Рейтинг:
0

Peter Leow

Вы должны создать переменную перед циклом, если хотите использовать ее в состоянии цикла. Но зачем вам это нужно

userSecondInput 
, он никогда не использовался вне цикла. Вы просто хотите захватить none-пустой ввод от пользователя, просто используйте
userInput
будем делать. Попробовать это
		if (string.IsNullOrEmpty(userInput))
{
    do
    {
	 Console.WriteLine("invalid value! Please Enter Your name: ");
	 userInput = Console.ReadLine();
    }
    while (string.IsNullOrEmpty(userInput));
}


Philippe Mori

Использовать цикл while вместо того, чтобы сделать в то время как здесь.