Есть некий код банкомата, где пользователю необходимо сначала ввести свой ид.
Bankomat[] banks = new Bankomat[] { new Bankomat(146251, 1500, 15, "Петров Иван Иванович"),
new Bankomat(146252, 3400, 80, "Сергеев Александр Сергеевич"),
new Bankomat(146253, 710, 55, "Леонтьев Петр Евгеньевич")};
Console.Write("Введите ваш id пожалуйста: ");
int id = Convert.ToInt32(Console.ReadLine());
string Y = "Y";
int money = 0;
string acc = "";
foreach (Bankomat x in banks)
if (id == x.id)
{
..../*Тут не важно*/
}
else
{
Console.Write("Вы еще не зарегистрированы в нашей системе, обратитесь к оператору \n");
break;
}
Если ввести ид Петра Евгеньевича, то сначала 2 раза выведет, что я не зарегистрирован, а потом работа с банкоматом. Как нормально сделать?
Проще простого.
if(banks.Where(x=>x.Id==Id).FirstOrDefault()!=null)
{
Console.Write("Вы еще не зарегистрированы в нашей системе, обратитесь к оператору \n");
}
В цикле у вас каждый объект поочередно проверяется на соответствие условию id == x.id
, поэтому выводится 2 раза, что пользователь не зарегистрирован.
Чтобы исправить это нужно сначала проверить на соответствие все элементы массива, а затем уже выполнять нужный код. Для этого можно воспользоваться LINQ методом Any.
if (banks.Any(b => id == b.id))
{
..../*Тут не важно*/
}
else
{
Console.Write("Вы еще не зарегистрированы в нашей системе, обратитесь к оператору \n");
}
Если вам нужно не только проверить наличие объекта в массиве, а еще и обратиться к его свойствам, то это делается так:
var bankomat = banks.FirstOrDefault(b => id == b.id);
if(bankomat != null)
{
Console.WriteLine($"Здравствуйте {bankomat.name}");
}
else
{
Console.Write("Вы еще не зарегистрированы в нашей системе, обратитесь к оператору \n");
}
P.S. Избавьтесь от foreach
, в нем нет нужды.
В коде вопроса Вы выводите сообщение о ненайденом счете на каждой итерации цикла. К выводу о том, что счет не найден, можно прийти только после того, как цикл завершится.
Bankomat found = null;
foreach (Bankomat x in banks)
{
if (id == x.id)
{
found = x;
break;
}
}
if (found != null)
{
Console.WriteLine("Здравствуйте " + found.name);
/* Тут не важно */
}
else
{
Console.Write("Вы еще не зарегистрированы в нашей системе, обратитесь к оператору \n");
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Мне нужно сделать массив который хранит данные, знаю что можно сделать так
Здравствуйте, в woocommerce никак не могу найти способа работы с плагином без аутентификации (только get запросы нужны), возможно ли как-то напрямую...