Как получить 2 разных значения с плавающей точкой из одного текстового поля, переданных позже внутри уравнения. (C #)

#c# #windows

#c# #Windows

Вопрос:

Прежде всего, всем привет и извините за то, что я тупица!

Я относительно новичок в C #, у меня есть методы getFirstNumber и getSecondNumber , но я не могу понять, как заставить buttonEquals_Click работать так, как задумано.

Идея заключается в том, что:

  1. Пользователь вводит число в текстовое поле.

  2. Пользователь нажимает на » ,-,*,/,» кнопка number преобразуется в первое число с плавающей запятой.

  3. Пользователь вводит другое число в то же текстовое поле.

  4. Пользователь нажимает кнопку «=», число анализируется как второе число с плавающей запятой ….
    ….. и он получает вывод уравнения в виде метки.

Я застрял на последней точке, я не могу разобраться в C #, пожалуйста, помогите мне: D

     public void getfirstNumber(float firstNumber,int Operation)
    {
        float firstnumber = firstNumber;
        int  operation = Operation;
    }

    public void getsecondNumber(float secondNumber)
    {
         float secondnumber = secondNumber;
    }

    private void buttonMULTIPLY_Click(object sender, EventArgs e)
    {
        float firstNumber = float.Parse(textBoxInput.Text);
        int multiply = 4;
        getfirstNumber(firstNumber,mul);
    }

    private void buttonEQUALS_Click(object sender, EventArgs e)
    {
        float secondNumber = float.Parse(textBoxInput.Text);
        getsecondNumber(secondNumber);

         /* if operation == 4 
            {print in label the output of firstnumber / secondnumber
          } */
    }
  

Комментарии:

1. Я думаю, вы пытаетесь создать калькулятор, но я на самом деле не понял, что делают методы getfirstNumber и getsecondNumber ?

2. Вы должны создать глобальные свойства «firstNumber» и «secondNumber». То, как вы используете их сейчас, каждый раз инициализирует их как новые. Читайте о глобальных свойствах онлайн

3. …узнайте о scope где вы объявляете переменную, определяет, где она «живет» или где вы можете ее использовать.

4. Итак, в одном текстовом поле у вас есть оба числа, которые нужно умножить вместе. Вам нужно разделить содержимое текстового поля на первый пробел, и тогда у вас будут две подстроки, которые вы можете разобрать и умножить

Ответ №1:

Вам не нужны методы getfirstNumber() и getSecondNumber() :

 string Operation = "";
float firstNumber = 0, seconNumber = 0;

 private void buttonMULTIPLY_Click(object sender, EventArgs e)
{
     firstNumber = float.Parse(textBoxInput.Text);
     Operation = "*";
}

 private void buttonEQUALS_Click(object sender, EventArgs e)
 {
     secondNumber = float.Parse(textBoxInput.Text);
     switch(Operation)
     {
          case "*":
              textBoxInput.Text = (firstNumber * secondNumber).ToString();
              break;
          case "-":
              textBoxInput.Text = (firstNumber - secondNumber).ToString();
              break;
          case " ":
              textBoxInput.Text = (firstNumber   secondNumber).ToString();
              break;
          case "/":
              textBoxInput.Text = (firstNumber / secondNumber).ToString();
              break;

     }
    Operation = "";
}
  

Комментарии:

1. Спасибо, но он по-прежнему не передает ни первое числовое значение, ни знак операции методу buttonEQUALS.

2. При нажатии кнопки умножения firstNumber устанавливается, и вы также устанавливаете тип операции. при buttonEQUALS нажатии secondNumber устанавливается значение, и теперь у вас есть и числа, и оператор, поэтому вы можете вычислить результат с помощью этой кнопки и показать результат.

3. разве это не то, что вы хотите сделать? и обратите внимание, что событие нажатия кнопки принимает только 2 параметра (object и eventargs), и вы не можете передать ему никаких других аргументов.

4. Оказалось, что я неправильно настроил события для кнопок, теперь все работает нормально, спасибо за вашу помощь и терпение 🙂