C#撰寫的計算器程式, 支持括號,小數點.主要是完善了括號和小數點,四則運算問題 ,供大家參考. 也參考了網上一些方法,在此謝過. 寫的不好,請大家批評指正.
第一部分:
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 labman
{
public partial class Calculator : Form
{
public Calculator()
{
InitializeComponent();
}
public string s;
public string input = "";
public string s1, s2, s3;
int Num = 1;
bool Judge = true;
bool dotjudge = true;
bool bracketjudge = true;
void DigitalInput(char c)
{
if (txtBox1.Text == "")
{
input += c;
}
else if (Judge && (input.Length == 1)&&(input!="0"))
{
if (input.Substring(input.Length - 1, 1) != ")")
{
input += c;
}
}
else if (input.Length>=2)
{
if ((input.Substring(input.Length - 2, 2) != "/0")&&( input.Substring(input.Length - 1, 1) != ")"))
{
input += c;
}
}
}
void DotInput(char c)
{
input += c;
}
void SymbolInput(char c)
{
if (txtBox1.Text == "")
{
input += c;
}
else if (txtBox1.Text != "")
{
s1 = input.Substring(input.Length - 1, 1);
bracketjudge = true;
// ((Judge && (s1 != ")") && (s1 != "(")) || ((c == '+') || (c == '-') || (c == '*') || (c == '/')))
if ((s1 == "("))
{
bracketjudge = false;
}
else if ((Judge && (s1 == ")") || (c == '+') || (c == '-') || (c == '*') || (c == '/')))
{
input += c;
}
}
}
void LeftBracketInput(char c)
{
if (txtBox1.Text == "")
{
input += c;
}
else if (bracketjudge && (input.Substring(input.Length - 1, 1) != ")"))
{
int tempL = 0, tempR = 0;
for (int i = input.Length - 1; i >= 0; i--)
{
s2 = input.Substring(i, 1);
if ((s2 == "("))
{
tempL = tempL + 1;
}
if ((s2 == ")"))
{
tempR = tempR + 1;
}
}
s1 = input.Substring(input.Length - 1, 1);
if ((s1 == "1") || (s1 == "2")||(s1 == "3") || (s1 == "4") || (s1 == "5") || (s1 == "6")|| (s1 == "7")|| (s1 == "8")|| (s1 == "9")|| (s1 == "0")|| (s1 == ".")) //|| (tempL % 2 == 0) || (tempR % 2 == 0))
{
bracketjudge = false;
}
else
{ input += c; }
}
}
void RightBracketInput(char c)
{
int templb=0;
int temprb = 0;
for (int i = input.Length - 1; i >= 0; i--)
{
if ((input.Substring(i, 1)) == "(")
{ templb = templb + 1; }
}
for (int i = input.Length - 1; i >= 0; i--)
{
if ((input.Substring(i, 1)) == ")")
{ temprb = temprb + 1; }
}
if (txtBox1.Text == "")
{
input += c;
}
else if (bracketjudge ) //&& (input.Substring(input.Length - 1, 1) != ")"))
{
s1 = input.Substring(input.Length - 1, 1);
if ((s1 == "+") || (s1 == "-") || (s1 == "*") || (s1 == "/")||(s1==".")|| (s1 == "("))
{
bracketjudge = false;
}
else if(templb>temprb)
{ input += c; }
}
}
bool Pairjudge(string s)
{
return false;
}
/// <summary>
/// 顯示函式
/// </summary>
///
void ShowMessage()
{
txtBox1.Text = input;
}
private void Button1_Click(object sender, EventArgs e)
{
Judge = true;// k = 1;
DigitalInput('1');
ShowMessage();
}
private void Button2_Click(object sender, EventArgs e)
{
Judge = true;// k = 1;
//Num = 1;
DigitalInput('2');
ShowMessage();
}
private void Button3_Click(object sender, EventArgs e)
{
Judge = true;
DigitalInput('3');
ShowMessage();
}
private void Button4_Click(object sender, EventArgs e)
{
Judge = true;
DigitalInput('4');
ShowMessage();
}
private void Button5_Click(object sender, EventArgs e)
{
Judge = true;
DigitalInput('5');
ShowMessage();
}
private void Button6_Click(object sender, EventArgs e)
{
Judge = true;
DigitalInput('6');
ShowMessage();
}
private void Button7_Click(object sender, EventArgs e)
{
Judge = true;
DigitalInput('7');
ShowMessage();
}
private void Button8_Click(object sender, EventArgs e)
{
Judge = true;
DigitalInput('8');
ShowMessage();
}
private void Button9_Click(object sender, EventArgs e)
{
Judge = true;
DigitalInput('9');
ShowMessage();
}
//Zero show;
private void Button10_Click(object sender, EventArgs e)
{
// 數字零
if (txtBox1.Text == "")
{
Num += 1;
DigitalInput('0');
ShowMessage();
// Judge = false;
}
else if (input.Length == 1)
{
s1 = input.Substring(0, 1);
if (s1 != "0")
{
Judge = true;
DigitalInput('0');
ShowMessage();
//Judge = false;
}
}
else if (input.Length >= 2)
{
Judge = true;
DigitalInput('0');
ShowMessage();
}
}
private void Button11_Click(object sender, EventArgs e)
{
//.符號表示
Judge = true;
if ((txtBox1.Text == "")||(txtBox1.Text =="("))
{
Num += 1;
DigitalInput('0');
DotInput('.');
ShowMessage();
// Judge = false;
}
else if (input.Length ==1)
{
Num += 1;
DotInput('.');
ShowMessage();
// Judge = false;
}
else if ((input.Length >= 2)&& (input.Substring(input.Length - 1, 1) != ")"))
{
//Input('0');
if ((input.Substring(input.Length - 2, 2)=="/0"))
{
DotInput('.');
ShowMessage();
}
s1 = input.Substring(input.Length - 1, 1);
Num+= 1;
if ((s1 == "+") || (s1 == "-") ||(s1 == "*") || (s1 == "/") || (s1 == "("))
{
DotInput('0');
DotInput('.');
ShowMessage();
//Judge = false;
}
int i, temp = 0;
string s2;
Num += 1;
for (i = input.Length - 1; i >= 1; i--)
{
s2 = input.Substring(i, 1);
if ((s2 == "+") || (s2 == "-") || (s2 == "*") || (s2 == "/"))
{
temp = i;
break;
}
}
for (i = input.Length - 1; i > temp; i--)
{
s3 = input.Substring(i, 1);
if (s3==".")
{
dotjudge = false;
}
}
if (dotjudge==true)
{
DotInput('.');
ShowMessage();
//Judge = false;
}
}
}
private void Button12_Click(object sender, EventArgs e)
{
// 加法;
if (txtBox1.Text == "")
{
MessageBox.Show("There must be one numerator");
}
else
{
s3 = input.Substring(input.Length - 1, 1);
if (Judge && s3 != ".") //(k == 1)
{ SymbolInput('+'); }
ShowMessage();
Judge = false; // k += 1;
dotjudge = true;
Num = 1;
}
}
private void Button13_Click(object sender, EventArgs e)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/79091.html
標籤:C#
上一篇:求各位大神
下一篇:C#撰寫的計算器程式
