【问题标题】:In C#, how can I pick between two items?在 C# 中,如何在两个项目之间进行选择?
【发布时间】:2013-09-12 02:52:54
【问题描述】:

这可能以前被问过,但如果有,我找不到。我正在编写一个小游戏,其中随机生成总和供用户回答,并计算正确+错误的答案。到目前为止它可以工作,但我希望实现一个系统,游戏在两个随机选择的数字之间随机选择 +、-、/ 和 * 符号,然后根据选择的数字改变计算正确答案的方式。为了更好的主意,这是我当前的相关代码:

    public void makeNewSum()
    {
        var randomNum = new Random();
        num1 = randomNum.Next(0, 10);
        num2 = randomNum.Next(0, 10);
        answer = num1 + num2;
        label1.Text = num1.ToString() + " + " + num2.ToString() + " = ";
        txtAnswer.Text = "";
        txtAnswer.Focus();

“label1”项是显示必须回答的总和的位置,尽管您可能知道。我想弄清楚的是如何告诉它在“+”、“-”、“/”和“*”之间进行选择,它目前总是说“+”,然后将变量“答案”更改为反映所选符号。我打算使用 if 语句来反映符号的选择,但我不知道如何让它首先在它们之间进行选择。非常感谢您的帮助!

【问题讨论】:

    标签: c# math random


    【解决方案1】:

    你可以使用数组:

    char[] operators = { '+', '-', '*', '/' };
    

    然后选择一个:

    char op = operators[randomNum.Next(operators.Length)];
    

    可以使用其他东西,例如enum Operator { plus, minus, mult, ... },而不是char。在每种情况下,您当然都需要一个小型解释器来从 char / enum 操作员那里获得您自己的正确答案。喜欢:

    switch(op)
    {
       case '+' : 
          answer = a + b;
          break;
    
       case '-' : 
          answer = a - b;
          break;
    
       // etc
    }
    

    【讨论】:

    • 那么我将如何从这里开始 if 语句?就像“if”之后的括号内的内容一样?为了尝试比仅仅要求直接答案更直观,char 是如何工作的?
    • switch 似乎更合适。
    • 哦,我以前从未听说过开关......但是,是的,这似乎是两者中更好的。谢谢!
    • 还有一件事 - (operators.length) 是什么意思和做什么?而且,根据 Visual Studio,System.Array 不包含“长度”的定义......我该如何补救?
    • 使用大写 L,Length。它返回数组中的项目数。
    【解决方案2】:

    试试这个

    Random r = new Random();
    char[] operators = new char[] { '+', '-', '*', '/' };
    char op = operators[r.Next(0, operators.Length)];
    

    【讨论】:

      猜你喜欢
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      相关资源
      最近更新 更多