0

我正在尝试制作一个生成 2 个随机数的程序,然后,在用户输入这些数字的乘法后,它会在 MessageBox 中告诉用户用户是对还是错。有点像教育模拟器。

我在结尾部分遇到问题。我要说的是;如果答案与 number1 和 number2 相乘的结果相同,那么它会说;“雷特!” 如果不; “兰特……”

有任何想法吗?

    private void bt_end_Click(object sender, RoutedEventArgs e)
    {
        int number1 = 0;
        int number2 = 0;
        int answer = 0;
        tbnumber1.Text = number1.ToString();
        tbnumber2.Text = number2.ToString();

        if (svar == (number1 * number2))
        {
            MessageBox.Show("Rétt!");
        }
        else
        {
            MessageBox.Show("Rangt...");
        }
    }
}

}

完整的代码。

    public MainWindow()
    {
        InitializeComponent();
    }

    int tala1 = 0;
    int tala2 = 0;
    int svar = 0;

    private void btstart_Click(object sender, RoutedEventArgs e)
    {
        tbtala1.Text = "";
        tbtala2.Text = "";
        tbsvar.Text = "";

        Random random = new Random();

        tala1 = random.Next(1, 11);
        tala2 = random.Next(1, 11);

        tbtala1.Text = tala1.ToString();
        tbtala2.Text = tala2.ToString();
    }

    private void btend_Click(object sender, RoutedEventArgs e)
    {
        tbtala1.Text = tala1.ToString();
        tbtala2.Text = tala2.ToString();
        tbsvar.Text = svar.ToString();

        if (svar == (tala1 * tala2).ToString())
        {
            MessageBox.Show("Rétt!");
        }
        else
        {
            MessageBox.Show("Rangt... :(");
        }
    }
}

}

解决了。感谢所有做过/试图提供帮助的人。

最终版本: 最终版本:

    public MainWindow()
    {
        InitializeComponent();
    }

    int tala1 = 0;
    int tala2 = 0;
    int svar = 0;

    private void btstart_Click(object sender, RoutedEventArgs e)
    {
        tbtala1.Text = "";
        tbtala2.Text = "";
        tbsvar.Text = "";

        Random random = new Random();

        tala1 = random.Next(1, 11);
        tala2 = random.Next(1, 11);

        tbtala1.Text = tala1.ToString();
        tbtala2.Text = tala2.ToString();
    }

    private void btend_Click(object sender, RoutedEventArgs e)
    {
        tala1 = Convert.ToInt32(tbtala1.Text);
        tala2 = Convert.ToInt32(tbtala2.Text);
        svar = Convert.ToInt32(tbsvar.Text);

        if (svar == (tala1 * tala2))
        {
            MessageBox.Show("Rétt!");
        }
        else
        {
            MessageBox.Show("Rangt... :(");
        }
4

4 回答 4

1

要以安全的方式执行此操作,您不仅应该Parse将文本输入数字,还应该确保文本确实首先包含数字。如果你的数字应该是整数,那么你可以使用这个:

private void bt_end_Click(object sender, RoutedEventArgs e)
{
    int number1 = 0;
    int number2 = 0;
    if (int.TryParse(tbnumber1.Text, out number1) || 
        int.TryParse(tbnumber12.Text, out number2)) MessageBox.Show("Rangt...");

    MessageBox.Show(svar == number1 * number2 ? "Rétt!" : "Rangt...");
}
于 2013-11-06T10:42:09.987 回答
0

您将数字放入文本框值中。您必须将文本框值转换为数字。

private void btend_Click(object sender, RoutedEventArgs e)
{
    try{
        tala1 = Convert.ToInt32(tbtala1.Text);
        tala2 = Convert.ToInt32(tbtala2.Text);
        svar = Convert.ToInt32(tbsvar.Text);

        if (svar == (tala1 * tala2))
        {
            MessageBox.Show("Rétt!");
        }
        else
        {
            MessageBox.Show("Rangt... :(");
        }
    }catch{
        MessageBox.Show("Invalid input");
    }
}
于 2013-11-06T10:46:13.383 回答
0

1.我观察到你没有在任何地方初始化变量'svar'。

用适当的值初始化您的 svar 变量。

2.替换这个:

  if (svar == (number1 * number2).ToString())

与以下:

   if (svar == (number1 * number2))
于 2013-11-06T10:32:20.290 回答
0

你永远不会定义 svar。您可能的意思是这样的,假设 svar 设置较早并且是随机乘法的正确乘积:

private void bt_end_Click(object sender, RoutedEventArgs e)
{
    int number1 = 0;
    int number2 = 0;

    number1 = int.Parse(tbnumber1.Text);
    number2 = int.Parse(tbnumber2.Text);

    if (svar == (number1 * number2))
    {
        MessageBox.Show("Rétt!");
    }
    else
    {
        MessageBox.Show("Rangt...");
    }
}
于 2013-11-06T10:32:26.847 回答