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