Программа запрашивает имя, и я хочу, чтобы программа спросила после генерации случайного числа, хочет ли пользователь сделать это снова. Если пользователь нажмет Y, программа должна перезапуститься.
while (true) {
Random rnd = new Random();
int trust = rnd.Next(0, 100);
Console.WriteLine("Tell me your name");
string name = Console.ReadLine();
Console.WriteLine(name +" " + "is" + " " + trust + " " + "points `enter code here`trustworthy");
if (trust <= 20)
{
Console.WriteLine("gtfo");
}
if (trust >= 21 && trust <= 50)
{
Console.WriteLine("not gonna tell you anything");
}
if (trust >= 50 && trust <= 70)
{
Console.WriteLine("not that trustworthy");
}
if (trust >= 71 && trust <= 90)
{
Console.WriteLine("quite trustworthy");
}
if (trust >= 91 && trust <= 100)
{
Console.WriteLine(" you are trustworthy");
}
Console.ReadKey();
Console.WriteLine("\nAgain? (y/n)");
if (Console.ReadLine().ToLower() != "yes")
break;
}
в чем проблема с текущим кодом? Кажется, если вы введете «да», цикл должен продолжиться.
@ManojChoudhari, не будет ли break;выход петля while?
Если вы хотите продолжить, когда они вводят «y», вам нужно проверить это вместо «да».
Уберите часть «Как вас зовут» из цикла, если вы не хотите спрашивать об этом каждый раз.
@Symon Исправьте, он закрывается, если пользователь вводит что-либо, кроме «да».
@Symon - я говорил то же самое. Если пользователь вводит yes, цикл продолжится. В противном случае он сломается. Если эта программа должна продолжать цикл при нажатии y, то должно быть одно условие ИЛИ (||), которое также проверяется с помощью 'y'.





Есть несколько вещей, которые вы можете исправить в своем коде.
break;) должно быть, если пользователь НЕТ вводит «да» (у вас он прерывается, если они делать вводят «да»).Random, а не создавать новый экземпляр на каждой итерации цикла, поэтому мы также можем исключить это из цикла.else if, так как все условия являются эксклюзивными — нет необходимости обрабатывать все остальные условия, если мы столкнемся с true одним из них.Console.ReadKeyЭти реализованные вещи будут выглядеть примерно так:
Console.WriteLine("Tell me your name");
string name = Console.ReadLine();
Random rnd = new Random();
while (true)
{
int trust = rnd.Next(0, 100);
Console.WriteLine($"{name} is {trust} points trustworthy");
if (trust <= 20) Console.WriteLine("gtfo");
else if (trust <= 50) Console.WriteLine("not gonna tell you anything");
else if (trust <= 70) Console.WriteLine("not that trustworthy");
else if (trust <= 90) Console.WriteLine("quite trustworthy");
else Console.WriteLine("you are trustworthy");
Console.WriteLine("\nAgain? (y/n)");
if (Console.ReadKey().Key != ConsoleKey.Y) break;
}
Вы можете попробовать объявить логическое значение (например,
bool restart = true;) до в цикле. Вместоwhile(true)должно бытьwhile(restart != false).