首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

简易计算器代码(C#编撰)中,这一句话是什么意思

2013-11-04 
简易计算器代码(C#编写)中,这一句话是什么意思?下面的程序来源于http://wenku.baidu.com/view/1b4e03f9024

简易计算器代码(C#编写)中,这一句话是什么意思?
下面的程序来源于http://wenku.baidu.com/view/1b4e03f90242a8956bece461.html
我是在学习如何编写简易计算器,所以想理解该程序每一行代码的意思。
我的疑问是:
以下程序中,txtReadout.Text = txtReadout.Text + myNumber;这句话难倒没有问题吗?我觉得是有问题的,myNumber是形参,被定义为int型,而txtReadout.Text应该是字符串吧,字符串和int可以相加吗?

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

namespace calculator
{
    public partial class Form1 : Form
    {
        double num1, num2, result;      // 操作数及运算结果
        bool decimalFlag = false;      // 判断输入的是否为小数
        string myOperator;

        public Form1()
        {
            InitializeComponent();
        }

        public void NumClick(int myNumber)
        {
            if (decimalFlag)                      
            {
                txtReadout.Text = txtReadout.Text + myNumber;            }
            else
            {
                if (txtReadout.Text == "0.")     
                {
                   
                    txtReadout.Text = myNumber + ".";
                }
                else
                {
                   
                    txtReadout.Text = txtReadout.Text.Substring
                        (0, txtReadout.Text.Length - 1) + myNumber + ".";
                }
            }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button0_Click(object sender, EventArgs e)
        {
            NumClick(0);

        }

        private void btn_sub_Click(object sender, EventArgs e)
        {
            myOperator = "Sub";
            num1 = double.Parse(txtReadout.Text);
            txtReadout.Text = "0.";
            decimalFlag = false;

        }

        private void btnDiv_Click(object sender, EventArgs e)
        {
            myOperator = "Div";
            num1 = double.Parse(txtReadout.Text);
            txtReadout.Text = "0.";
            decimalFlag = false;

        }

        private void btnNum7_Click(object sender, EventArgs e)


        {
            NumClick(7);
        }

        private void btnNum8_Click(object sender, EventArgs e)
        {
            NumClick(8);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            txtReadout.Text = "0.";

            txtReadout.TextAlign = HorizontalAlignment.Right;

        }

        private void btnNum1_Click(object sender, EventArgs e)
        {
            NumClick(1);
        }

        private void btnNum2_Click(object sender, EventArgs e)
        {
            NumClick(2);
        }

        private void btnNum3_Click(object sender, EventArgs e)
        {
            NumClick(3);
        }

        private void btnNum4_Click(object sender, EventArgs e)
        {
            NumClick(4);
        }

        private void btnNum5_Click(object sender, EventArgs e)
        {
            NumClick(5);
        }

        private void btnNum6_Click(object sender, EventArgs e)
        {
            NumClick(6);
        }

        private void btnNum9_Click(object sender, EventArgs e)
        {
            NumClick(9);
        }

        private void btnDot_Click(object sender, EventArgs e)
        {
            decimalFlag = true;
        }

        private void btnC_Click(object sender, EventArgs e)
        {
            num1 = 0;
            num2 = 0;
            txtReadout.Text = "0.";
            decimalFlag = false;

        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            myOperator = "add";
            num1 = double.Parse(txtReadout.Text);
            txtReadout.Text = "0.";
            decimalFlag = false;

        }

        private void btnMul_Click(object sender, EventArgs e)
        {
            myOperator = "Mul";
            num1 = double.Parse(txtReadout.Text);
            txtReadout.Text = "0.";
            decimalFlag = false;

        }

        private void btn_equ_Click(object sender, EventArgs e)
        {
            num2 = double.Parse(txtReadout.Text);


            switch (myOperator)
            {
                case "add":
                    result = num1 + num2;
                    txtReadout.Text = result.ToString();
                    break;
                case "Sub":
                    result = num1 - num2;
                    txtReadout.Text = result.ToString();
                    break;
                case "Mul":
                    result = num1 * num2;
                    txtReadout.Text = result.ToString();
                    break;
                case "Div":
                    if (num2 == 0)
                    {
                        txtReadout.Text = "除数不能为“0”!";
                    }
                    else
                    {
                        result = num1 / num2;
                        txtReadout.Text = result.ToString();
                    }
                    break;
            }
        }

    }
}

[解决办法]
最好显式调用 ToString

txtReadout.Text = txtReadout.Text + myNumber.ToString();

学习代码,不要去学习那些自身就不好的代码。
[解决办法]
这句的意思应该是txtReadout.Text中的字符串与myNumber所形成的字符串相加,不过这种写法不太好
[解决办法]
运算符重载吧。为数值类型和字符串类型预定义了二元 + 运算符。对于数值类型,+ 计算两个操作数之和。当其中的一个操作数是字符串类型或两个操作数都是字符串类型时,+ 将操作数的字符串表示形式串联在一起。

热点排行