Задать вопрос
@Ptichka007

Не работает скрипт — калькулятор в юнити. Что делать?

Сделал простенький калькулятор в юнити, однако когда вписываешь цифры в input Field и нажимаешь на кнопку вывода результата, выходит либо цифра 2, либо цифра 1, либо вообще ноль. Например, если пишешь 10 * 10, то выйдет 1, если напишешь 2 + 2, то выйдет 2, ну вы поняли.

Вот код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;

public class Simplecalcan : MonoBehaviour
{
    [SerializeField] InputField firstnum;
    [SerializeField] InputField secondnum;
    [SerializeField] InputField thesign;
    [SerializeField] Text text;




     public void Calculator()
    {




        if (thesign.text == "*")
        {
            int firstnum2 = Convert.ToInt32(firstnum);
            int secondnum2 = Convert.ToInt32(secondnum);


            int rezult = firstnum2 * secondnum2;
            string rezult2 = rezult.ToString();
            text.text = rezult2;
        }

        else if (thesign.text == "+")
        {
            int firstnum2 = Convert.ToInt32(firstnum);
            int secondnum2 = Convert.ToInt32(secondnum);

            int rezult = firstnum2 + secondnum2;
            string rezult2 = rezult.ToString();
            text.text = rezult2;



        }

        else if (thesign.text == "/")
        {
            int firstnum2 = Convert.ToInt32(firstnum);
            int secondnum2 = Convert.ToInt32(secondnum);

            int rezult = firstnum2 / secondnum2;
            string rezult2 = rezult.ToString();
            text.text = rezult2;


        }


        else if (thesign.text == "-")
        {
            int firstnum2 = Convert.ToInt32(firstnum);
            int secondnum2 = Convert.ToInt32(secondnum);

            int rezult = firstnum2 - secondnum2;
            string rezult2 = rezult.ToString();
            text.text = rezult2;

        }


    }

}
  • Вопрос задан
  • 903 просмотра
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
@NoNameDeveloper
Unity Developer
А вот и рабочий укороченный код. Конвертировать нужно не компонент InputField, а текст данного компонента.
Можно использовать также int.Parse(value).

using System;

using UnityEngine;
using UnityEngine.UI;

public class SimpleCalculator : MonoBehaviour
{
    [SerializeField] private InputField _firstInput;
    [SerializeField] private InputField _secondInput;
    [SerializeField] private InputField _signInput;
    [SerializeField] private Text _text;

    // Methods

    public void Calculator()
    {
        int a = int.Parse(_firstInput.text);
        int b = int.Parse(_secondInput.text);

        _text.text = GetResult(a, b).ToString();
    }

    private float GetResult(int a, int b)
    {
        switch(_signInput.text)
        {
            case "+": return Add(a, b);
            case "-": return Substract(a, b);
            case "*": return Multiply(a, b);
            case "/": return Divide(a, b);
            default: throw new Exception("Invalid sign");
        }
    }

    private float Add(int a, int b) => a + b;
    private float Substract(int a, int b) => a - b;
    private float Multiply(int a, int b) => a * b;
    private float Divide(int a, int b) => a / b;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы