实现计算算式字符串的2种方式(方式2)
来源:互联网 发布:ubuntu 16.04 xampp 编辑:程序博客网 时间:2024/05/18 03:27
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;namespace ConsoleApplication2{ class Program { static bool flag = true; static string lastNumber = ""; static string Number = ""; static char Fuhao; static int h; static int k; static void Main(string[] args) { //DataTable dt = new DataTable(); //Console.WriteLine(dt.Compute("3+3*8-6", "")); //Console.Read(); string str = "125+568-567*95/81-6/958"; Console.WriteLine(show(str)); Console.Read(); } static string show(string str) { for (int i = 0; i < str.Length; i++) { if (str[i] == '*') { for (int j = i-1; j >= 0; j--) { if (char.IsNumber(str[j]) || str[j] == '.') { lastNumber = str[j]+lastNumber ; } else if (str[j] == '+' || str[j] == '-' || str[j] == '*' || str[j] == '/') { h = j+1; j = -1; } } for (int j = i +1; j < str.Length+1; j++) { //要添加一位否则若最后一位是连乘检测不了 if (j<str.Length&&(char.IsNumber(str[j])|| str[j]=='.')) { Number = Number + str[j]; } if ((j < str.Length && (str[j] == '+'||str[j]=='-'||str[j]=='*'||str[j]=='/'))||j==str.Length) { k = j-1; j = str.Length; } } double m = Convert.ToDouble(lastNumber) * Convert.ToDouble(Number); str = str.Remove(h, k - h+1); str = str.Insert(h, m.ToString()); lastNumber = ""; Number = ""; return show(str); } if (str[i] == '/') { for (int j = i - 1; j >= 0; j--) { if (char.IsNumber(str[j])) { lastNumber = str[j] + lastNumber; } else { h = j + 1; j = -1; } } for (int j = i + 1; j < str.Length + 1; j++) { //要添加一位否则若最后一位是连乘检测不了 if (j < str.Length && char.IsNumber(str[j])) { Number = Number + str[j]; } if ((j < str.Length && (str[j] == '+'||str[j]=='-'||str[j]=='*'||str[j]=='/')) || j == str.Length) { k = j - 1; j = str.Length; } } double m = Convert.ToDouble(lastNumber) / Convert.ToDouble(Number); str = str.Remove(h, k - h + 1); str = str.Insert(h, m.ToString()); lastNumber = ""; Number = ""; return show(str); } } for (int j = 0; j < str.Length; j++) { if (flag == true) { if (char.IsNumber(str[j]) || str[j]=='.') { lastNumber = lastNumber + str[j]; } else if(str[j] == '+'||str[j]=='-'||str[j]=='*'||str[j]=='/') { Fuhao = str[j]; flag = false; } } else { if (char.IsNumber(str[j]) || str[j] == '.') { Number = Number + str[j]; } else if (str[j] == '+' || str[j] == '-' || str[j] == '*' || str[j] == '/') { if (Fuhao == '+') { lastNumber = (int.Parse(lastNumber) + int.Parse(Number)).ToString(); Number = ""; } if (Fuhao == '-') { lastNumber = (int.Parse(lastNumber) - int.Parse(Number)).ToString(); Number = ""; } Fuhao = str[j]; } } } //封顶的时候还得计算一次 if (Fuhao == '+') { lastNumber = (Convert.ToDouble(lastNumber) + Convert.ToDouble(Number)).ToString(); Number = ""; } if (Fuhao == '-') { lastNumber = (Convert.ToDouble(lastNumber) - Convert.ToDouble(Number)).ToString(); Number = ""; } return lastNumber; } }}
- 实现计算算式字符串的2种方式(方式2)
- 实现计算算式字符串的2种方式(方式1)
- js实现字符串翻转的2种方式
- 字符串反转实现的几种方式
- 线程的2种实现方式
- mongo like 的2种实现方式
- Fragment详解实现的2种方式
- 线程的2种实现方式
- 多线程的2种实现方式
- SQLSERVER行转列的2种实现方式
- 2、线程实现的两种方式
- 字符串拷贝函数strcpy的几种实现思想方式
- java字符串全排列的实现方式
- 字符串分割的c++实现方式
- 【Unity】把字符串保存成文件的2种方式
- 感抗的计算方式
- 农历的计算方式
- 盒子的计算方式
- Android: 你的安卓手机被劫持了嘛
- 实现计算算式字符串的2种方式(方式1)
- 效率,效率,不能忍了!!
- VIM 文件浏览插件 — NERDTree
- 验证年龄字段是否为数字
- 实现计算算式字符串的2种方式(方式2)
- QT的安装
- Oracle 学习笔记8 —— PL/SQL 定义变量
- 和环境合作
- 界面布局-TableLayout
- 不要过于诚实与人交往
- Java中的过滤器[有实例]
- Combination Sum II
- 去掉字符串的左右空格