为什么输出不正确?

Why is the output is incorrect?

我用 C# Windows Form with Points 做了一个测验。但是它的输出总是不正确的。问题出在哪里?

     int point=0;
     private void button1_Click(object sender, EventArgs e)
        {

           if(right.Checked && !wrong.Checked && !wrong1.Checked && !wrong2.Checked)
            {
                point++;
            }
            else
            {
                if(right1.Checked && !wrong3.Checked && !wrong4.Checked && !wrong5.Checked)
                    {
                    point++;

                    }
                else
                {
                    if (right2.Checked && !wrong6.Checked && !wrong7.Checked)
                    {
                        point++;
                    }
                    else
                    {
                        if (right3.Checked && right4.Checked && !wrong8.Checked && !wrong9.Checked)
                        {
                            point++;
                        }
                    }
                }

            }
            MessageBox.Show($"Your have {point}/5 correct!");
        }

这是 Windows 形式的测验(德语)的 PHOTO

输出是 "Your have 1/5 correct! 甚至所有答案都是正确的

您将所有 IF 语句定义为 IF ELSE

所以基本上你只会得到一个点,因为其中只有 1 个点是正确的。

删除 ELSE 并将它们作为 IF 语句,它应该可以工作。

嗯,你的代码看起来有点乱。您真的需要检查是否检查了错误的答案吗?你为什么不做这样的事情:

 private void button1_Click(object sender, EventArgs e) {
   checkAnswer(right.Checked)
   checkAnswer(right1.Checked)

   checkAnswer(right2.Checked)

   checkAnswer(right3.Checked)

   checkAnswer(right4.Checked)

   MessageBox.Show($"Your have {point}/5 correct!");
}

public void checkAnswer(boolean answer) {
 if (answer) {
   point++;
 }
}

else 表示 "otherwise".

按照您编写的方式,执行的次数不可能超过一个 point++

这里不要使用else