代码询问用户他/她是否吃过东西。然后它循环问题直到输入有效输入(例如"没有"或"某些")。我的问题是当我使用" ||"操作员,无论输入什么,循环都会继续。根据我的理解,当用户输入的字符串等于"没有","某些"或两者都基于我使用的运算符时,循环应该结束。但是这个结果只发生在我使用"&&"运算符,这让我感到困惑,因为这意味着用户必须输入一个等于&#34的字符串值;没有"和"东西"。所以我的问题是为什么我的循环与"&&"运营商但不是" ||"或" ^"运营商?提前致谢。
struct multivar
{
public int userInt;
public string userText;
}
class Program
{
static void Main(string[] args)
{
multivar structHolder;
string shrinkRay = "";
while ((shrinkRay != "nothing") || (shrinkRay != "something"))
{
Console.WriteLine("What did you eat today?\n1)Nothing?\n2)Something?");
structHolder.userText = Console.ReadLine();
shrinkRay = structHolder.userText.ToLower();
if ((shrinkRay != "nothing") || (shrinkRay != "something"))
{
Console.WriteLine("Please input a valid response such as \"Nothing\" or \"Something\".");
}
}
答案 0 :(得分:2)
用户不能同时输入“无”和“某事”,你的||永远都是真的。这只是使用&&。
的正确逻辑答案 1 :(得分:2)
你的逻辑:
str != 1 || str != 2
可以改写为
!(str == 1 && str == 2)
其明显的一个内部语句必须是false,因此整个内部语句将是false。否定将使陈述真实,永远。你需要像其他人所说的那样改变你的逻辑。
答案 2 :(得分:0)
是
(shrinkRay != "nothing" && shrinkRay != "something")
或者
!(shrinkRay == "nothing" || shrinkRay == "something")