Я использую C # для разработки калькулятора, и я получаю Complie Error CS0029 - PullRequest
0 голосов
/ 16 октября 2019

Поэтому для моей домашней работы меня попросили спроектировать полностью функционирующий калькулятор, который принимает как нажатия клавиш, так и нажатия кнопок, но для событий нажатия кнопок «0-9» я получаю сообщение об ошибке компиляции: CS0029: не удается неявно преобразовать тип «int» в'string'

вот код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Calculator
{
    public partial class Form1 : Form
    {
        private String calculatedNumber;     // Stores numbers in string form
        private Boolean dot = false;         // Falg: to control when a dot can be placed in a number
        public Form1()
        {
            InitializeComponent();
        }

        private void BtnZero_Click(object sender, EventArgs e)  //adds 0 to string
        {
            //calculatedNumber = Convert.ToString(0);
            if (calculatedNumber = 0)
            {

                LblDisplay.Text=calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnOne_Click(object sender, EventArgs e)   //adds 1 to string
        {

            if (calculatedNumber = 1)
            {
                calculatedNumber = 1.ToString();
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnTwo_Click(object sender, EventArgs e)   //adds 2 to string
        {

            if (calculatedNumber = 2)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnThree_Click(object sender, EventArgs e)   //adds 3 to string
        {

            if (calculatedNumber = 3)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnFour_Click(object sender, EventArgs e)   //adds 4 to string
        {

            if (calculatedNumber = 4)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }
        private void button5_Click(object sender, EventArgs e)   //adds 5 to string
        {

            if (calculatedNumber = 5)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }
        private void BtnSix_Click(object sender, EventArgs e)   //adds 6 to string
        {

            if (calculatedNumber = 6)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnSeven_Click(object sender, EventArgs e)   //adds 7 to string
        {

            if (calculatedNumber = 7)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnEight_Click(object sender, EventArgs e)   //adds 8 to string
        {

            if (calculatedNumber = 8)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnNine_Click(object sender, EventArgs e)   //adds 9 to string
        {
            calculatedNumber = 9.ToString();
            if (calculatedNumber = 9)
            {

                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnDot_Click(object sender, EventArgs e)   //adds . to string
        {
            if (!dot)
            {
                calculatedNumber += ".";
                dot = true;
            }

            LblDisplay.Text = calculatedNumber;
        }

что я делаю не так? PS: я новичок в C #

1 Ответ

2 голосов
/ 16 октября 2019

Вы получаете сообщение об ошибке «Не удается неявно преобразовать тип int в строку» из всех ваших операторов if. Вы должны передать выражение, которое возвращает bool. Однако вы пытаетесь присвоить int для calculatedNumber, который является строкой. Но вы хотите проверить равенство, которое == не =.

Измените все свои if операторы на:

if (calculatedNumber == "0") //or whatever number

Однако в вашем коде calculatedNumber никогдакажется, установлен где угодно, поэтому никогда не будет истинным.

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

 private void BtnOne_Click(object sender, EventArgs e)   //adds 1 to string
 {
      LblDisplay.Text = "1";
 }

Однако это не похоже на ту функциональность, которую вы хотите, поскольку она заменяет номер каждый раз, когда вы нажимаете новый номер, вы, вероятно, хотите добавить его следующим образом:

private void BtnOne_Click(object sender, EventArgs e)   //adds 1 to string
{
      LblDisplay.Text = LblDisplay.Text + "1";
}
...