C# 循环忽略条件语句
C# Loop Ignores Conditional Statements
我在 class 程序中的一个方法中创建了一个骰子模拟器。
并且在 Main 方法中,我试图创建一个循环来询问用户 he/she 是否想再次播放。
出于某种原因,循环完全忽略了我的条件语句,我不知道为什么。
我输入数字或任何乱码都没关系,它仍然会重新启动游戏。
唯一有效的是当我输入 "N" 或 "n" 退出时。
string alt;
do
{
GameLogic();
Console.WriteLine("Play again?");
Console.WriteLine("[Y]es | [N]o");
alt = Console.ReadLine();
alt.ToLower();
if (alt == "Y" || alt == "y")
{
Console.Clear();
GameLogic();
}
else if (alt == "N" || alt == "n")
{
break;
}
else
{
Console.WriteLine("Invalid input!");
}
} while (alt != "N" || alt != "n");
Console.WriteLine("\nPress any key to quit...");
Console.ReadKey();
我希望它按照条件要求它做。如果您输入 "Y, y" 或 "N, n" 以外的任何其他内容,它应该显示消息 "Invalid input!".
只有输入"Y"或"y"才会重新开始游戏。
你的逻辑有点不对。
试试这个代码:
string alt;
bool firstRun = true;
do
{
if (firstRun)
{
firstRun = false;
GameLogic();
}
Console.WriteLine("Play again?");
Console.WriteLine("[Y]es | [N]o");
alt = Console.ReadLine();
alt.ToLower();
if (alt == "Y" || alt == "y")
{
Console.Clear();
GameLogic();
}
else if (alt == "N" || alt == "n")
{
break;
}
else
{
Console.WriteLine("Invalid input!");
}
} while (alt != "N" || alt != "n");
Console.WriteLine("\nPress any key to quit...");
Console.ReadKey();
基本上,GameLogic 会在您的 do while 循环开始时执行。
所以你必须确保它第一次执行然后只有当人选择它才会执行第二次。
我以某种方式解决了它...我不得不移动 GameLogic();在循环之外。
我在 class 程序中的一个方法中创建了一个骰子模拟器。
并且在 Main 方法中,我试图创建一个循环来询问用户 he/she 是否想再次播放。
出于某种原因,循环完全忽略了我的条件语句,我不知道为什么。
我输入数字或任何乱码都没关系,它仍然会重新启动游戏。
唯一有效的是当我输入 "N" 或 "n" 退出时。
string alt;
do
{
GameLogic();
Console.WriteLine("Play again?");
Console.WriteLine("[Y]es | [N]o");
alt = Console.ReadLine();
alt.ToLower();
if (alt == "Y" || alt == "y")
{
Console.Clear();
GameLogic();
}
else if (alt == "N" || alt == "n")
{
break;
}
else
{
Console.WriteLine("Invalid input!");
}
} while (alt != "N" || alt != "n");
Console.WriteLine("\nPress any key to quit...");
Console.ReadKey();
我希望它按照条件要求它做。如果您输入 "Y, y" 或 "N, n" 以外的任何其他内容,它应该显示消息 "Invalid input!".
只有输入"Y"或"y"才会重新开始游戏。
你的逻辑有点不对。
试试这个代码:
string alt;
bool firstRun = true;
do
{
if (firstRun)
{
firstRun = false;
GameLogic();
}
Console.WriteLine("Play again?");
Console.WriteLine("[Y]es | [N]o");
alt = Console.ReadLine();
alt.ToLower();
if (alt == "Y" || alt == "y")
{
Console.Clear();
GameLogic();
}
else if (alt == "N" || alt == "n")
{
break;
}
else
{
Console.WriteLine("Invalid input!");
}
} while (alt != "N" || alt != "n");
Console.WriteLine("\nPress any key to quit...");
Console.ReadKey();
基本上,GameLogic 会在您的 do while 循环开始时执行。
所以你必须确保它第一次执行然后只有当人选择它才会执行第二次。
我以某种方式解决了它...我不得不移动 GameLogic();在循环之外。