Как я могу закрыть программу после 3 неправильных попыток ввода пользователя/пароля

#c#

#c#

Вопрос:

Для программы, которую я создаю, мне необходимо реализовать функцию, которая позволяет пользователю 3 попытки ввести правильное имя пользователя и пароль, однако у меня возникли проблемы с закрытием программы после 3 неправильных попыток.

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

Я чувствую себя очень глупо, потому что знаю, что это прямо передо мной, как это сделать, хотя я все еще новичок, поэтому я ожидал, что испорчу что-то подобное

 private void button1_Click(object sender, EventArgs e) {  string stringUser = "User";  string stringPass = "Password";  int i = 0;   while (i lt; 3)  {  if (textBoxUsername.Text != stringUser amp;amp;   textBoxPassword.Text != stringPass)  {  i  ;  }  else  {  MessageBox.Show("Test");  }  } }  

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

1. Знаете ли вы, как выйти из программы? С вашим кодом есть куча проблем. 1. Нет ничего, что могло бы привести к выходу программы. 2. Вы сбрасываете i значение при 0 каждом вызове функции. На самом деле, i не существует вне функции. 3. Проверьте свое if состояние. Постройте таблицу истинности, если вы в замешательстве. textBoxUsername.Text != stringUser amp;amp; textBoxPassword.Text != stringPass будет только true тогда, когда оба будут неравными. Вы хотите найти случай, когда либо то, либо другое неравноценно.

2. 4. while (i lt; 3) является неправильным условием для проверки. Как только вы нажимаете на кнопку, ее обработчик выполняется, не давая пользователю возможности изменить ввод, поэтому i при if вводе условия он мгновенно увеличивается до 3 (помните, что в любом случае это неправильное условие). 5. Когда if условие не введено, i оно никогда не увеличивается, поэтому вы вводите бесконечный цикл

3. Извините, я должен был сказать, что я полностью перестраивал вещи для тестирования, и это была всего лишь самая последняя копия/вставка того, что у меня есть. У меня было другое утверждение if для if counter gt; max попыток, close(); но по-прежнему ничего не происходило. Я думаю, что все так, как ты сказал, я сбрасываю счетчик, но я не мог понять, как этого не делать

4. Очевидно, что ваш код ужасен, но давайте на мгновение отложим это в сторону. Чтобы делать то, что вы хотите, вам нужно поддерживать количество попыток вне этой функции. Какой фреймворк вы используете? WPF? Формы Windows? Наследие ASP.NET Веб-формы? Во-вторых, что значит близко ? когда пользователь нажимает 3 раза — что вы ожидаете от программы?

5. Windows Forms, и да, я должен был пояснить: ожидается, что программа автоматически закроется при более чем 3 неправильных попытках.

Ответ №1:

Вы сбрасываете значение int i с каждым нажатием кнопки. Переместите его за пределы функции, чтобы он не сбрасывался.

 int attempts = 0; string stringUser = "User"; string stringPass = "Password";  private void button1_Click(object sender, EventArgs e) {  if (i gt;= 3){  System.Windows.Forms.Application.Exit();  }    if (textBoxUsername.Text != stringUser amp;amp; textBoxPassword.Text != stringPass)  {  i  ;  }   else  {  MessageBox.Show("Login Successfull");  } }