Вопрос для начинающих — В то время как цикл для простой программы ввода пароля только зацикливает вопрос

#c# #while-loop

Вопрос:

Я следую учебнику по созданию простой программы командной строки для запроса пароля (консоль.writeline) и напишите, что пароль аутентифицирован, если введен правильно (инструкция console.readline if) — это работает гладко:

 Console.WriteLine("Please Input Your Password:"); var password = Console.ReadLine(); if (password == "secret") Console.WriteLine("You have been authenticated"); else if (password != "secret") Console.WriteLine("You have not been authenticated");  

Следующая часть упражнения состоит в том, чтобы запросить повторный ввод пароля, если он неверен. Я следовал упражнению в соответствии с учебником, но после запуска программы программа повторяет вопрос строку за строкой, а не методично выполняет шаги кода.

 var password = ""; while (password !="secret") Console.WriteLine("Please Input Your Password:"); password = Console.ReadLine(); if (password == "secret") Console.WriteLine("You have been authenticated"); else if (password != "secret") Console.WriteLine("You have not been authenticated");  

Буду благодарен за любой совет! Спасибо!

Комментарии:

1. Сделайте правильный отступ в коде, и вы будете знать, откуда взялась ваша ошибка. Подсказка : Если в while операторе или содержится более 1 if инструкции, необходимо использовать фигурные скобки { }

Ответ №1:

В вашем while цикле отсутствуют фигурные блоки {} . когда {} вы не указываете, цикл while указывает только на следующую строку вместо нужного вам блока кода.

Кроме того, вам это не нужно else if (password != "secret") . else этого достаточно

 var password = ""; while (password !="secret") {  Console.WriteLine("Please Input Your Password:");  password = Console.ReadLine();  if (password == "secret")  Console.WriteLine("You have been authenticated");  else  Console.WriteLine("You have not been authenticated"); }  

Комментарии:

1. Спасибо! Еще предстоит узнать об этом в учебнике, но теперь все очень ясно!