C# 写的正整数四则运算计算器

2022-12-12,,

实际上没能做出来负数、括号、小数的功能,才写这么个标题

大神直接略过,也欢迎指指点点~。~

输入一个四则运算表达式,计算出结果,想想不难,实现起来也不是很容易的。

流程:1.for循环输入的四则运算字符串,把字符串重组成一个string列表,叫做rebuildExp,比如说 1*2+23-12转换成 "1","*","2","+","23","-","12"

2.循环每一项,如果不是符号就追加到新的string列表里起个名字叫chengchuExp,如果是符号就判断是否是"*"或"/"(先算乘除后算加减)

    如果是"*"或"/"

计算(chengchuExp最后一项,符号项,和符号后一项)

    删除chengchuExp最后一项,把计算的结果追加到chengchuExp后面

    循环加1

    计算结果就得到了只包含加减法的chengchuExp string列表

   3.循环chengchuExp每一项,如果不是符号就追加到新的string列表,名字叫jiajianExp,如果是符号就判断是否是"+"或"-"

    如果是"+"或"-"

计算(jiajianExp最后一项,chengchuExp符号项,和chengchuExp符号后一项)

    删除jiajianExp最后一项,把计算的结果追加到jiajianExp后面

    循环加1

    计算结果就是运算结果。话不多说,代码在下面

###############################################################################################

class Program {
static void Main(string[] args) {
string expresult = string.Empty;
while (true) {
Console.WriteLine("请输入计算式:");
List<string> rebuildExp = ReturnrebuildExp(Console.ReadLine());
List<string> chengchuExp = new List<string>();
List<string> jiajianExp = new List<string>();
int tempValue = 0;
//先算乘除并添加到乘除队列里
for (int i = 0; i < rebuildExp.Count; i++) {
if (int.TryParse(rebuildExp[i].ToString(), out tempValue)) {
chengchuExp.Add(rebuildExp[i]);
} else {
if (rebuildExp[i] == "*" || rebuildExp[i] == "/") {
expresult = GetR(chengchuExp[chengchuExp.Count - 1], rebuildExp[i], rebuildExp[i + 1]);
chengchuExp.RemoveAt(chengchuExp.Count - 1);
chengchuExp.Add(expresult);
i++;
} else {
chengchuExp.Add(rebuildExp[i]);
}
}
}
//后算加减并添加到加减队列里
for (int i = 0; i < chengchuExp.Count; i++) {
if (int.TryParse(chengchuExp[i].ToString(), out tempValue)) {
jiajianExp.Add(chengchuExp[i]);
} else {
if (chengchuExp[i] == "+" || chengchuExp[i] == "-") {
expresult = GetR(jiajianExp[jiajianExp.Count - 1], chengchuExp[i], chengchuExp[i + 1]);
jiajianExp.RemoveAt(jiajianExp.Count - 1);
jiajianExp.Add(expresult);
i++;
} else {
jiajianExp.Add(chengchuExp[i]);
}
}
}
string finalexp = string.Empty;
Console.WriteLine("计算结果为:{0}", jiajianExp[0]);
rebuildExp.Clear();
chengchuExp.Clear();
jiajianExp.Clear();
}
}
//返回重组后的计算式
public static List<string> ReturnrebuildExp(string exp) {
List<string> rebuildExp = new List<string>();
int tempValue = 0;
string temp = string.Empty;
for (int i = 0; i < exp.Length; i++) {
if (int.TryParse(exp[i].ToString(), out tempValue)) {
temp += exp[i].ToString();
} else {
rebuildExp.Add(temp);
temp = string.Empty;
rebuildExp.Add(exp[i].ToString());
}
}
rebuildExp.Add(temp);
return rebuildExp; }
//得出结果
public static string GetR(string a, string sign, string b) {
string ReturnValue = string.Empty;
int x = Convert.ToInt32(a.ToString());
int y = Convert.ToInt32(b.ToString());
switch (sign) {
case "+": ReturnValue = (x + y).ToString(); break;
case "-": ReturnValue = (x - y).ToString(); break;
case "*": ReturnValue = (x * y).ToString(); break;
case "/": ReturnValue = (x / y).ToString(); break;
}
return ReturnValue;
}
}

  

C# 写的正整数四则运算计算器的相关教程结束。

《C# 写的正整数四则运算计算器.doc》

下载本文的Word格式文档,以方便收藏与打印。