繁体   English   中英

具有多个 OR 值的 If 语句

[英]If Statement with multiple OR Values

我目前正在课外做一个简单的谜语游戏,我想做的是有一个声明来验证问题是什么,以及输入的答案是否正确。 这是我到目前为止的代码:

private void butt_Submit_Click(object sender, EventArgs e)
        {
            if (lab_Riddle.Text == "What Walks on 4 Legs in the Morning, 2 in the Afternoon and 3 in the Evening?")

                if (TeBo_Ans.Text == "A Man") ;
;             {
                MessageBox.Show("Well Done");
                lab_Riddle.Text = ("I have an Eye but Cannot See- What Am I?");
             }
            if (TeBo_Ans.Text == "Mankind") ;
             {
                MessageBox.Show("Good Words");
                lab_Riddle.Text = ("I have an Eye but Cannot See- What Am I?");
             }
            if (TeBo_Ans.Text == "People") ;
             {
                MessageBox.Show("Yes");
                lab_Riddle.Text = ("I have an Eye but Cannot See- What Am I?");
             }
            if (TeBo_Ans.Text == "A Person") ;
             {
                MessageBox.Show("Exactly");
                lab_Riddle.Text = ("I have an Eye but Cannot See- What Am I?");
             }
            if (TeBo_Ans.Text == "Humankind") ;
             {
                MessageBox.Show("Exactly");
                lab_Riddle.Text = ("I have an Eye but Cannot See- What Am I?");
             }
        } 

在这里, lab_Riddle是包含问题的标签,而TeBo_Ans是用户输入答案的文本框。 这段代码可以工作,但理想情况下,我想将其压缩为类似

If lab_Riddle.Text= [Riddle 1]
 {
  If TeBo_Ans == [a] OR [b] OR [d] 
   {
    MessageBox.Show ("Correct")
    lab_Riddle.Text [riddle 2]
    }
   Else 
   { 
    MessageBox.Show ("Incorrect")
  }
}

如果我还没有说过,语言是 C# 和垂直线。 这可能是一个非常漫长而复杂的方法,但我对编码仍然很陌生。

嗯,你可以使用字典的答案

    String answer = "a dog";
    Dictionary<string, string> riddleans = new Dictionary<string, string>();
    riddleans.Add("a man", "Well done");
    riddleans.Add("mankind", "Good words");
    answer = answer.ToLower();
    if (riddleans.ContainsKey(answer))
    {
        Messagebox.Show(riddleans[answer]);
        gotonextriddle();
    }
    else
    {
        Messagebox.Show("Incorrect);
    }

但是你可以通过使用结构或类来扩展它,然后你有一个谜语列表等等。

这里要指出的一件事是答案的最低点 - 这意味着如果我写的是“MANKIND”或“mankind”,它仍然适合而不是“Mankind”。

由于您要根据用户输入的内容显示不同的文本片段,因此您可以将其存储在Dictionary

var answers = new Dictionary<string, string>()
{
    { "Mankind", "Good words"  },
    { "People", "Yes" },
    { "A Man", "People" }
};

var answerGiven = TeBo_Ans.Text;

if (answers.ContainsKey(answerGiven))
{
    // user has the correct answer
}

显然,在这种情况下,您需要考虑区分大小写,例如,但这只是做您想做的一种方式。 我想在某些方面您的问题可能更适合放在 Code Review Stack Exchange 上。

https://codereview.stackexchange.com/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM