Почему вывод неверный? - PullRequest
       19

Почему вывод неверный?

0 голосов
/ 06 апреля 2020

У меня есть Викторина с C# Windows Форма с очками. Но вывод этого всегда неверен. Где может быть проблема l ie?

     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 (немецкий)!

Вывод "Your have 1/5 correct! даже все ответы были правильными

Ответы [ 3 ]

2 голосов
/ 06 апреля 2020

Ну, ваш код выглядит немного грязно. Вы действительно должны проверить, проверен ли неправильный ответ? Почему бы вам не сделать что-то вроде этого:

 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++;
 }
}
2 голосов
/ 06 апреля 2020

У вас есть все ваши IF утверждения, определенные как IF ELSE

Таким образом, в основном вы будете получать только одно очко, поскольку только один из них может быть правильным.

Удалить ELSE и иметь их так же, как IF операторов, и это должно работать.

0 голосов
/ 06 апреля 2020

else означает «в противном случае».

Так, как вы написали, вы не сможете выполнить более одного point++.

Не используйте else здесь.

...