2017-02-15 2 views
0

я не могу понять, почему моя строка рестарт изменения «NO» независимо от того, что я вхожу в этот момент:Простые да/нет для перезапуска программы C# с помощью цикла Do-While

while (
    (restart != "YES") && (restart != "NO") 
) 

Любая помощь будет принята с благодарностью.

do 
{ 
    //main part of program 
    Console.Write("Do you wish to calculate another? (YES/NO) "); 
    restart = Console.ReadLine(); 
    restart = qualified.ToUpper(); 
    while ((restart != "YES") && (restart != "NO")) //???? 
    { 
     Console.WriteLine("Error"); 
     Console.WriteLine("Do you wish to calculate another? (YES/NO) "); 
     restart = Console.ReadLine(); 
     restart = qualified.ToUpper(); 
    } 
} while (restart == "YES"); 
+2

Вы устанавливаете рестарт как консольный ввод, то вы установите его в качестве верхнего регистра некоторых переменные «квалифицированный» .. – stuartd

+0

'рестарт = qualified.ToUpper();'? –

+1

Отлаживайте свой код. Наблюдайте за изменением значений. Как указывает «stuartd», вы немедленно отбрасываете их вход. Если бы вы прошли это шаг за шагом, вы бы нашли это. – Rob

ответ

1

Удалите следующий код:

restart = qualified.ToUpper(); 
+0

Очень смущается, если не сказать ... Кодирование при усталости - это не очень хорошая идея. Спасибо за быстрый ответ всем. –

+0

Np. Поэтому, пожалуйста, проголосуйте – AHBagheri

2

qualified.ToUpper() никогда не назначен, и поэтому остается неизменным. А переменной restart всегда присваивается то же самое значение независимо от ввода пользователем. Просто, что, и использование:

do 
{ 
    //main part of program 
    Console.Write("Do you wish to calculate another? (YES/NO) "); 
    restart = Console.ReadLine().ToUpper(); 
    while ((restart != "YES") && (restart != "NO")) //???? 
    { 
     Console.WriteLine("Error"); 
     Console.WriteLine("Do you wish to calculate another? (YES/NO) "); 
     restart = Console.ReadLine().ToUpper(); 
    } 
} while (restart == "YES"); 
Смежные вопросы