Klaudia28 Ответов: 2

Как сделать так, чтобы код входа работал только для определенного пользователя?


Это говорит мне, что "Андерс"не существует в текущем контексте, а также что есть ошибка с термином else? Я не понимаю почему

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

using System;
public class login
{
public static void Main()
{
string user;
int pass;
int counter = 0;
do
{
Console.Write("Enter a user: ");
user = (Console.ReadLine());
Console.Write("Enter a password: ");
pass = Convert.ToInt32(Console.ReadLine());
if ((user != Anders) || (pass != 1234))
{
Console.WriteLine("Login Error");
counter++;
}
}
while (((user != "Anders") || (pass != 1234)) && (counter != 3));
if ((user != "Anders") || (pass != 1234));
Console.WriteLine("Logged out!");
else
Console.WriteLine("Login successful");
}
}

2 Ответов

Рейтинг:
12

OriginalGriff

Начните с самого простого:

Цитата:
есть ли ошибка с термином else?
Внимательно посмотрите на свой код:
if ((user != "Anders") || (pass != 1234));
Видишь точку с запятой?
На этом все заканчивается. if блок, поэтому следующий оператор выполняется независимо от if состояние. И из-за этого система не может найти if чтобы соответствовать else и жалуется.
Уберите точку с запятой:
if ((user != "Anders") || (pass != 1234))
   {
   Console.WriteLine("Logged out!");
   }
else
   {
   Console.WriteLine("Login successful");
   }
И ваша ошибка исчезнет.
Кстати: это очень хорошая идея - всегда использовать фигурные скобки, даже когда они вам не нужны-это избавит вас от большого горя позже, если вы добавите строку. С помощью скобок очевидно, что линия должна быть внутри них, а не снаружи? Не все так ясно и может привести к ошибкам.

Другая проблема:
Цитата:
"Андерс" не существует в текущем контексте,
Правильно, это не так. Опять же, посмотрите на код:
if ((user != Anders) || (pass != 1234))
Anders он не заключен в кавычки, поэтому это имя переменной, а не строковое значение. Нет никакой переменной, называемой Anders таким образом, система не знает, что вы имеете в виду, и жалуется.
Позже в вашем коде вы используете строку:
while (((user != "Anders") || (pass != 1234)) && (counter != 3));
Таким образом, на первый взгляд, вы хотите использовать двойные кавычки вокруг Anders в обоих случаях:
if ((user != "Anders") || (pass != 1234))


Рейтинг:
1

ibrahim yassin

использование системы;
вход в открытый класс
{
публичный статический пустота главный()
{
строку пользователя;
инт пройти;
int счетчик = 0;



пробовать {

Авторизоваться:
Приставка.Write ("введите пользователя: ");
пользователь = (консоль.Линия чтения());
Приставка.Write ("введите пароль: ");
pass = конвертировать.ToInt32 (Консоль.Линия чтения());
if ((user ! = "Anders") | / (pass != 1234))
{
Приставка.WriteLine ("Ошибка Входа В Систему");
счетчик++;
Гото логин;

}
еще {
Приставка.WriteLine ("успешно вошел в систему .. !!")
}

}
поймать (исключение бывший) {
Приставка.WriteLine(напр. сообщение);
}
}