Случайный объект выбран из списка, но по сравнению с пользовательским вводом принимается только первый элемент в списке - PullRequest
0 голосов
/ 27 марта 2019

Моя программа случайным образом выбирает объект (ион) из списка объектов (ионов) и позволяет пользователю вводить значения заряда и полярности, которые они считают, однако, когда я проверяю вход по значениямдля случайного объекта (иона) вместо фактических переменных принимается только первый объект в списке.Я проверил, чтобы убедиться, что переменные меняются, и даже при сопоставлении он будет принимать только заряд и полярность первого иона в списке.

this is the list of objects, ion guesser is declared outside
   int IonGuesser;
   public class Ion
    {
        public string Charge; // 1-3 no need to make int as no maths are performed
        public string Polarity; // + or -
        public string Name; // Self explanatory
        public string Formula; // chemical formula eg OH
    }

    List<Ion> Ions = new List<Ion>
    {
        new Ion {Charge = ("1"), Polarity =("-"),Name = ("Hydroxide"), Formula = ("OH")},
        new Ion {Charge = ("1"), Polarity =("+"),Name = ("Hydron"), Formula = ("H")},
        new Ion {Charge = ("1"), Polarity =("+"),Name = ("Lithium"), Formula = ("Li")},
        new Ion {Charge = ("1"), Polarity =("+"),Name = ("Sodium"), Formula = ("Na")},

нажатие этой кнопки вызывает случайный ион и отображаетФормула для пользователя

 private void NextIonButton_Click(object sender, EventArgs e)
    {
        int IonGuesser = rnd.Next(Ions.Count);
        var RandomIon = Ions[IonGuesser];
        IonNameDisplay.Text = RandomIon.Formula;
    }

ниже - это кнопка, которая должна проверять, верна она или нет, она только скажет, что заряд ("1") и полярность ("-") верны дажекогда это не так

    private void IonSubmitButton_Click(object sender, EventArgs e)
    {
        int CorrectCounter = 0;
        var RandomIon = Ions[IonGuesser];
        if (ChargeDropDown.Text == RandomIon.Charge)
        {
            CorrectCounter++;
        }
        if (PolarityDropDown.Text == RandomIon.Polarity)
        {
            CorrectCounter++;
        }
        if (CorrectCounter == 2)
        {
            IonGuessStatus.Text = ("Correct");
        }
        else
        {
            IonGuessStatus.Text = ("Incorrect");
        }

Таким образом, когда говорят, что показанная формула иона - Li, IonGuessStatus должен быть ("правильный"), когда входные данные в выпадающих списках равны (1) и (+), однако этотолько правильно говорит, когда ввод (1) и (-)

1 Ответ

0 голосов
/ 27 марта 2019

удаление int из Int Ionguesser = rnd.Next (Ions.Count);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...