C# While循环开关语句直到语句为false
我创建了两个使用相同属性的类。函数GenerateRamdon从第二个类继承的方向类称为health。我发现的问题是,当它在GenerateRamdon函数中运行代码时,它没有到达switch语句。在查看断点和传递的信息时,Ramdom方法工作正常,并生成正确的数字,当删除while循环时,它将转到正确的if语句C# While循环开关语句直到语句为false,c#,C#,我创建了两个使用相同属性的类。函数GenerateRamdon从第二个类继承的方向类称为health。我发现的问题是,当它在GenerateRamdon函数中运行代码时,它没有到达switch语句。在查看断点和传递的信息时,Ramdom方法工作正常,并生成正确的数字,当删除while循环时,它将转到正确的if语句 private void GenerateRamdon() { while (StartHealth < 0) { Random Directio
private void GenerateRamdon()
{
while (StartHealth < 0)
{
Random DirectionRandon = new Random();
int GetDirect = DirectionRandon.Next(0, 100);
if (GetDirect <= 20)
{
Console.WriteLine("Would you like to move straight, Right or Left");
string FirstDirect = Console.ReadLine();
while (FirstDirect.Equals(true))
{
switch (FirstDirect)
{
case "Straight":
Console.WriteLine("You walk straight forward");
break;
case "Right":
Console.WriteLine("You walk to your right");
break;
case "Left":
Console.WriteLine("You walk to your left");
break;
default:
Console.WriteLine("Please enter Vailid direction");
break;
}
}
}
else if (GetDirect > 21 && GetDirect <= 40)
{
Console.WriteLine("Would you like to move stay, back or Left");
string SecontDirect = Console.ReadLine();
while (SecontDirect.Equals(true))
{
switch (SecontDirect)
{
case "Stay":
Console.WriteLine("You stand still");
break;
case "Back":
Console.WriteLine("You walk back to where you came but it looks all different");
break;
case "Left":
Console.WriteLine("You walk to your left");
break;
default:
Console.WriteLine("Please enter Vailid direction");
break;
}
}
}
else if (GetDirect > 21 && GetDirect <= 60)
{
Console.WriteLine("Would you like to move Back, Right or Left");
string ThridDirect = Console.ReadLine();
while (ThridDirect.Equals(true))
{
switch (ThridDirect)
{
case "Back":
Console.WriteLine("You walk back to where you came but it looks all different");
break;
case "Right":
Console.WriteLine("You walk to your right");
break;
case "Left":
Console.WriteLine("You walk to your left");
break;
default:
Console.WriteLine("Please enter Vailid direction");
break;
}
}
}
else if (GetDirect > 61 && GetDirect <= 80)
{
Console.WriteLine("Would you like to move back, straight or Right");
string FourthDirect = Console.ReadLine();
while (FourthDirect.Equals(true))
{
switch (FourthDirect)
{
case "Back":
Console.WriteLine("You walk back to where you came but it looks all different");
break;
case "Straight":
Console.WriteLine("You walk straight forward");
break;
case "Right":
Console.WriteLine("You walk to your right");
break;
default:
Console.WriteLine("Please enter Vailid direction");
break;
}
}
}
else
{
Console.WriteLine("Would you like to move straight, Right, Stay or Left");
string FifthDirect = Console.ReadLine();
while (FifthDirect.Equals(true))
{
switch (FifthDirect)
{
case "Straight":
Console.WriteLine("You walk straight forward");
break;
case "Right":
Console.WriteLine("You walk to your right");
break;
case "Stay":
Console.WriteLine("You stand still");
break;
case "Left":
Console.WriteLine("You walk to your left");
break;
default:
Console.WriteLine("Please enter Vailid direction");
break;
}
}
}
}
}
当我遍历switch语句时,代码没有被访问,控制台应用程序正在关闭。我只是想知道这是为什么,以及如何解决这个问题的指导。感谢您提供的任何信息 这里有几个问题;让我们首先确保输入请求在循环中,并且我们有一个布尔值true/false来存储程序是否对输入满意:
Console.WriteLine("Would you like to move straight, Right or Left");
bool isInputValid = false; // stores the validity of the input, reusable
string FirstDirect = "moonwalk"; // this will be overwritten inside of the loop
while (!isValidInput) // same as: while (isValidInput == false)
{
firstDirect = Console.ReadLine();
switch (FirstDirect)
{
case "Straight":
Console.WriteLine("You walk straight forward");
isValidInput = true;
break;
case "Right":
Console.WriteLine("You walk to your right");
isValidInput = true;
break;
case "Left":
Console.WriteLine("You walk to your left");
isValidInput = true;
break;
default:
Console.WriteLine("Please enter Valid direction");
isValidInput = false; // not necessary, but there you go
break;
}
}
}
isValidInput = false; // reset for next loop
我们实际上可以重用方向指示器firstDirect,我会在后续循环中将其更改为inputDirection变量,除非您想保留数据以了解他们以前的选择。,首先,FirstDirect.Equalstrue将始终为false.string.Equalsbool将始终为false。您的意思是边写边写吗?但请不要在实践中这样做,你希望你的循环终止可能与你的问题无关:请移动新的随机变量;搞不清状况任何循环。总是让它静止。
Console.WriteLine("Would you like to move straight, Right or Left");
bool isInputValid = false; // stores the validity of the input, reusable
string FirstDirect = "moonwalk"; // this will be overwritten inside of the loop
while (!isValidInput) // same as: while (isValidInput == false)
{
firstDirect = Console.ReadLine();
switch (FirstDirect)
{
case "Straight":
Console.WriteLine("You walk straight forward");
isValidInput = true;
break;
case "Right":
Console.WriteLine("You walk to your right");
isValidInput = true;
break;
case "Left":
Console.WriteLine("You walk to your left");
isValidInput = true;
break;
default:
Console.WriteLine("Please enter Valid direction");
isValidInput = false; // not necessary, but there you go
break;
}
}
}
isValidInput = false; // reset for next loop