为什么输出不正确?
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
。
我用 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
。