虽然语句忽略响应值
问题描述:
我有一个命令行要求用户说(Y/N),并将此值传递给checkResponse方法。虽然语句忽略响应值
由于某种原因,while循环忽略了值,即使当我调试它显示的值是“Y”。当值被设置为“N”时,它也继续循环。如果我将while语句移到while语句下面,程序的一半工作。我可以发送一个初始值“Y”,while语句将忽略它并开始运行它内部的代码。
任何想法,我失踪或俯视?
在此先感谢。从OR
public void checkResponse(string response, string confirmValue)
{
Console.WriteLine(response);
Console.WriteLine(response);
if (response == "Y")
{
return;
}
else if (response == "N")
{
Environment.Exit(0);
}
else
{
while ((response != "Y") || (response != "N"))
{
Console.Clear();
Console.WriteLine("\"" + response + "\" is not a valid response.");
Console.WriteLine();
Console.WriteLine("You entered:" + confirmValue);
Console.WriteLine("Is this correct? (Y/N)");
response = Console.ReadLine().ToUpper();
}
}
}
答
while ((response != "Y") || (response != "N"))
总是为真,作为响应不能Y和n同时。
答
你((response != "Y") || (response != "N"))
总是true
+0
现在我大声说出来,这是非常有道理的。谢谢你指出。 – snapplex 2012-07-25 13:49:28
答
确定。如果while
循环终止?我们希望它回再次检查:
public void checkResponse(string response, string confirmValue)
{
Check:
Console.WriteLine(response);
Console.WriteLine(response);
if (response == "Y")
{
return;
}
else if (response == "N")
{
Environment.Exit(0);
}
else
{
while ((response != "Y") && (response != "N"))
{
Console.Clear();
Console.WriteLine("\"" + response + "\" is not a valid response.");
Console.WriteLine();
Console.WriteLine("You entered:" + confirmValue);
Console.WriteLine("Is this correct? (Y/N)");
response = Console.ReadLine().ToUpper();
}
goto Check;
}
}
或者,更好:
public void checkResponse(string response, string confirmValue)
{
Console.WriteLine(response);
while (response != "Y" && response != "N")
{
Console.Clear();
Console.WriteLine("\"" + response + "\" is not a valid response.");
Console.WriteLine();
Console.WriteLine("You entered:" + confirmValue);
Console.WriteLine("Is this correct? (Y/N)");
response = Console.ReadLine().ToUpper();
}
if (response == "N")
Environment.Exit(0);
}
做了一些更多的研究,并结束了与while(!response.equals(“Y”)) – snapplex 2012-07-25 13:48:56