读书人

简易计算器代码(C#编撰)中这一句话

发布时间: 2013-11-04 16:56:03 作者: rapoo

简易计算器代码(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所形成的字符串相加,不过这种写法不太好
[解决办法]
运算符重载吧。为数值类型和字符串类型预定义了二元 + 运算符。对于数值类型,+ 计算两个操作数之和。当其中的一个操作数是字符串类型或两个操作数都是字符串类型时,+ 将操作数的字符串表示形式串联在一起。

读书人网 >C#

热点推荐