博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 计算器
阅读量:4096 次
发布时间:2019-05-25

本文共 10710 字,大约阅读时间需要 35 分钟。

源码:Form1.cs

软件截图

这里写图片描述

using System;using System.Collections.Generic;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication1{    public partial class equ : Form   //类equ的起点    {        public equ()        {            InitializeComponent();        }        private void Form1_Load(object sender, EventArgs e)        {        }        private void textBox1_TextChanged(object sender, EventArgs e)        {            this.textBox1.SelectionStart = this.textBox1.Text.Length;            this.textBox1.SelectionLength = 0;            this.textBox1.ScrollToCaret();        }        //---按键绑定--------------------        private void equ_KeyPress(object sender, KeyPressEventArgs e)        {            if (e.KeyChar == '1')            {                addNum("1");            }            if (e.KeyChar == '2')            {                addNum("2");            }            if (e.KeyChar == '3')            {                addNum("3");            }            if (e.KeyChar == '4')            {                addNum("4");            }            if (e.KeyChar == '5')            {                addNum("5");            }            if (e.KeyChar == '6')            {                addNum("6");            }            if (e.KeyChar == '7')            {                addNum("7");            }            if (e.KeyChar == '8')            {                addNum("8");            }            if (e.KeyChar == '9')            {                addNum("9");            }            if (e.KeyChar == '0')            {                addNum("0");            }            if (e.KeyChar == '+')            {                ways[index] = '+';                listway.Add('+');                selectways('+');            }            if (e.KeyChar == '-')            {                ways[index] = '-';                listway.Add('-');                selectways('-');            }            if (e.KeyChar == '*')            {                ways[index] = '*';                listway.Add('*');                selectways('*');            }            if (e.KeyChar == '/')            {                ways[index] = '/';                listway.Add('/');                 selectways('/');            }            if (e.KeyChar == '=')            {                answer();            }            if (e.KeyChar == 27)            {                Clear ();            }        }        //成员变量        string numstr = "";        string num_answer="" ;        char[] ways=new char [20] ;     //   运算方式标志                double[] num = new double[20];        int index = 0;        List
listnum =new List
(); //默认容量4个 List
listway = new List
(); int calflag1 = 0; // + - 标志位 int equflag2 = 0; // =标志 //只加数字和.方法addNum public void addNum(string num) //方法 string + { if (calflag1 == 1 && equflag2 == 1) //第二行计算,包括清零 { textBox1.Text += "\r\n"; //clear清屏,这里换行 num_answer = ""; numstr = ""; index =0; calflag1 = 0; equflag2 = 0; } textBox1.Text += num; numstr += num; } private void button1_Click_1(object sender, EventArgs e) { addNum("1"); } private void button2_Click_1(object sender, EventArgs e) { addNum("2"); } private void button3_Click_1(object sender, EventArgs e) { addNum("3"); } private void button4_Click_1(object sender, EventArgs e) { addNum("4"); } private void button5_Click_1(object sender, EventArgs e) { addNum("5"); } private void button6_Click_1(object sender, EventArgs e) { addNum("6"); } private void button7_Click_1(object sender, EventArgs e) { addNum("7"); } private void button8_Click_1(object sender, EventArgs e) { addNum("8"); } private void button9_Click_1(object sender, EventArgs e) { addNum("9"); } private void button10_Click_1(object sender, EventArgs e) { addNum("0"); } private void button11_Click(object sender, EventArgs e) // . { addNum("."); } //+ private void button13_Click_1(object sender, EventArgs e) { ways[index] = '+'; listway.Add('+'); selectways('+'); } //- private void button14_Click_1(object sender, EventArgs e) { ways[index] = '-'; listway.Add('-'); selectways('-'); } //* private void button15_Click_1(object sender, EventArgs e) { ways[index] = '*'; listway.Add('*'); selectways('*'); } // / private void button16_Click_1(object sender, EventArgs e) { ways[index] = '/'; listway.Add('/'); selectways('/'); } //计算符号 private void button12_Click(object sender, EventArgs e) //= { answer(); } private void button17_Click(object sender, EventArgs e) //清零 { Clear(); } private void button18_Click(object sender, EventArgs e) //退格键, 不需要处理集合数据 { if (equflag2 == 0) //出现= 不能退 { if (textBox1.Text.Length > 0) { if (textBox1.Text.EndsWith("+") || textBox1.Text.EndsWith("-") || textBox1.Text.EndsWith("*") || textBox1.Text.EndsWith("/")) { textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1); } else { textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1);//移除当前实例中的所有字符,从指定位置开始,一直到最后一个位置为止,并返回字符串。 numstr = numstr.Remove(numstr.Length - 1); } } } } public void selectways(char ways) //方法 string + { //已有方法时候不再增加+- if (textBox1.Text.EndsWith("+") || textBox1.Text.EndsWith("-") || textBox1.Text.EndsWith("*") || textBox1.Text.EndsWith("/")) { textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1); textBox1.Text += ways; listway.RemoveAt(index -1); //MessageBox.Show(":"+listway .Capacity ); } else { if (numstr.Length > 0) { // num[index] = Convert.ToDouble(numstr); listnum.Add(Convert.ToDouble(numstr)); index++; numstr = ""; switch (ways) { case '+': textBox1.Text += "+"; break; case '-': textBox1.Text += "-"; break; case '*': textBox1.Text += "*"; break; case '/': textBox1.Text += "/"; break; } calflag1 = 1; equflag2 = 0; } } } private double cal(double i, double j, char k) { switch (k) { case '+': return i + j; case '-': return i - j; case '*': return i * j; case '/': return i / j; default: return 00000000000; } // MessageBox.Show("k="+k); } private void answer() //计算 { textBox1.Text += "="; double result=0.0; try { // num[index] = Convert.ToDouble(numstr); listnum.Add(Convert.ToDouble(numstr)); index++; } catch { textBox1.Text = "请输入第二个数"; } //MessageBox.Show("ways:" + ways[0] +"/n" + ";num1:" + num[0] + ";num2:" + num[1] + ";num_answer :" + num_answer + "; numstr:" + numstr); //提示框 try { // result = num[0]; result = listnum[0]; for (int i = 0; i < index-1; i++) { // char aa = ways[i]; char aa = listway [i]; // MessageBox.Show("aa=" + aa); result = cal(result , listnum[i+1], aa); } num_answer = result.ToString(); textBox1.Text += num_answer; } catch { textBox1.Text = "error"; } equflag2 = 1; //等号自己的标志 numstr = ""; listnum.Clear(); listway.Clear(); } private void Clear() { textBox1.Text = ""; num_answer = ""; numstr = ""; calflag1 = 0; equflag2 = 0; index =0; listnum.Clear(); listway.Clear(); } }}// MessageBox.Show("aa=" + aa);//public bool EndsWith( string value ) 判断 string 对象的结尾是否匹配指定的字符串。//快速删除一行Shift+delete//if (caseflag3 == 1) //不换行接着计算//{
// num2_str += num;//}//else//{
// if (equflag2 == 0) //等号标志// {
// if (calflag1 == 0) //没有按计算方法,给第一个变量// {
// num1_str = num1_str + num;// }// else //按下计算方法后,数字赋给第二个变量// {
// num2_str += num;// }// }//} //if (calflag1 == 1 && equflag2 == 0) //没有等号下,按运算符//{
// num2_str = numstr;// double temp1 = Convert.ToDouble(num1_str);// double temp2 = Convert.ToDouble(num2_str);// switch (ways)// {
// case 1:// num_answer = (temp1 + temp2).ToString();// break;// case 2:// num_answer = (temp1 - temp2).ToString();// break;// case 3:// num_answer = (temp1 * temp2).ToString();// break;// case 4:// num_answer = (temp1 / temp2).ToString();// break;// }// equflag2 = 1; //等号自己的标志// num1_str = "";// num2_str = "";// numstr = "";//}
你可能感兴趣的文章
mapReduce(3)---入门示例WordCount
查看>>
hbase(3)---shell操作
查看>>
hbase(1)---概述
查看>>
hbase(5)---API示例
查看>>
SSM-CRUD(1)---环境搭建
查看>>
SSM-CRUD(2)---查询
查看>>
SSM-CRUD (3)---查询功能改造
查看>>
Nginx(2)---安装与启动
查看>>
springBoot(5)---整合servlet、Filter、Listener
查看>>
C++ 模板类型参数
查看>>
C++ 非类型模版参数
查看>>
设计模式 依赖倒转原则 & 里氏代换原则
查看>>
DirectX11 光照
查看>>
图形学 图形渲染管线
查看>>
DirectX11 计时和动画
查看>>
DirectX11 光照与材质的相互作用
查看>>
DirectX11 环境光
查看>>
DirectX11 镜面光
查看>>
DirectX11 三种光照组成对比
查看>>
DirectX11 指定材质
查看>>