C# 普通的计算器
单独的加法运算
最近在学习C#,看文档看的头疼。朋友说你不如自己试着写一个加法计算器吧。然后就写了一个。支持计算类似12.12, 123,.99,-1这样的数据。
具体代码如下:
主函数如下:
普通的计算器
由以上代码,我写了加减乘除取余运算,并且让用户选择需要进行运算的方式。
具体代码如下:
主函数如下:
源代码粘贴:
using System;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CalculatorA
{
class Calculator
{
public double GetNum()
{
//数据格式为 数字.数字
Regex reg = new Regex(@"^-?\d+\.\d+$", RegexOptions.IgnoreCase | RegexOptions.Compiled);
//数据格式为 数字
Regex reg1 =new Regex(@"^-?\d+\d+$", RegexOptions.IgnoreCase | RegexOptions.Compiled);
//数据格式为 .数字
Regex reg2 = new Regex(@"^-?\.\d+$", RegexOptions.IgnoreCase | RegexOptions.Compiled);
System.Console.WriteLine("请输入一个数字");
string number = Console.ReadLine();
System.Console.WriteLine("----------------------------");
//System.Console.WriteLine(reg.Match(number1).Success); //成功返回true,否则返回false
double Num;
//只有同时不满足上面3个正则表达式才进入循环,直到用户输入正确,满足上述3个正则表达式,才能退出循环
while ((reg.Match(number).Success) != true && (reg1.Match(number).Success) != true && (reg2.Match(number).Success) != true)
{
System.Console.WriteLine("输入有误,请重新输入");
number = Console.ReadLine();
System.Console.WriteLine("----------------------------");
//如果满足上述3个正则表达式,将得到的字符串转换成double类型,并返回
if (reg.Match(number).Success || reg1.Match(number).Success || reg2.Match(number).Success)
{
System.Console.WriteLine("输入正确!!!");
Num = Convert.ToDouble(number);
return Num;
}
}
System.Console.WriteLine("输入正确!!!");
Num = Convert.ToDouble(number);
return Num;
}
public int GetSelector()
{
//数据格式为 数字1-5
Regex reg3 = new Regex(@"^[1-5]$", RegexOptions.IgnoreCase | RegexOptions.Compiled);
System.Console.WriteLine("***Flora计算器***");
System.Console.WriteLine("请输入以下数字表达你想要选择的计算方式:");
System.Console.WriteLine("1表示加法计算");
System.Console.WriteLine("2表示减法计算");
System.Console.WriteLine("3表示乘法计算");
System.Console.WriteLine("4表示除法计算");
System.Console.WriteLine("5表示取余计算");
string selector =Console.ReadLine();
System.Console.WriteLine("*****************");
int Sel;
//只有同时不满足正则表达式才进入循环,直到用户输入正确,满足正则表达式,才能退出循环
while ((reg3.Match(selector).Success) != true)
{
System.Console.WriteLine("您输入的不是数字1-5,请重新输入!");
selector = Console.ReadLine();
System.Console.WriteLine("----------------------------");
//如果满足上述正则表达式,将得到的字符串转换成int类型,并返回
if (reg3.Match(selector).Success)
{
System.Console.WriteLine("输入正确!!!");
Sel = int.Parse(selector);
return Sel;
}
}
System.Console.WriteLine("输入正确!!!");
Sel = int.Parse(selector);
return Sel;
}
public void Add() //加法计算
{
double Num1 = GetNum();
double Num2 = GetNum();
System.Console.WriteLine("****加法计算****");
double Result = Num1 + Num2;
System.Console.WriteLine("{0} + {1} = {2}", Num1, Num2, Result);
}
public void Sub() //减法计算
{
double Num1 = GetNum();
double Num2 = GetNum();
System.Console.WriteLine("~~~~减法计算~~~~");
double Result = Num1 - Num2;
System.Console.WriteLine("{0} - {1} = {2}", Num1, Num2, Result);
}
public void Multi() //乘法计算
{
double Num1 = GetNum();
double Num2 = GetNum();
System.Console.WriteLine("~~~~乘法计算~~~~");
double Result = Num1 * Num2;
System.Console.WriteLine("{0} * {1} = {2}", Num1, Num2, Result);
}
public void Division() //除法计算
{
double Num1 = GetNum();
double Num2 = GetNum();
System.Console.WriteLine("~~~~除法计算~~~~");
double Result = Num1 / Num2;
System.Console.WriteLine("{0} / {1} = {2}", Num1, Num2, Result);
}
public void Remainder() //取余计算
{
double Num1 = GetNum();
double Num2 = GetNum();
System.Console.WriteLine("~~~~取余计算~~~~");
double Result = Num1 % Num2;
System.Console.WriteLine("{0} % {1} = {2}", Num1, Num2, Result);
}
public void Cal()
{
int Sel = GetSelector();
switch (Sel)
{
case 1:
System.Console.WriteLine("~~~~将进行加法运算~~~~");
Add();
break;
case 2:
System.Console.WriteLine("~~~~将进行减法运算~~~~");
Sub();
break;
case 3:
System.Console.WriteLine("~~~~将进行乘法运算~~~~");
Multi();
break;
case 4:
System.Console.WriteLine("~~~~将进行除法运算~~~~");
Division();
break;
case 5:
System.Console.WriteLine("~~~~将进行取余运算~~~~");
Remainder();
break;
default:
System.Console.WriteLine("~~~~输入有误,程序退出!~~~~");
break;
}
}
}
}
---------------------------------------------------------------------------------------------------------------------
using CalculatorA; //应用项目中的另一个命名空间
using System; //using关键字用于在程序中包含System命名空间。一个程序一般有多个using语句
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ChyTest //namespace声明。一个namespace是一系列的类。ChyTest命名空间包含了类HelloWorld
{
class HelloWorld //class声明。类HelloWorld包含了程序使用的数据和方法。类一般包含多个方法。方法定义了类的行为。
{
static void Main(string[] args) //Main方法,是所有C#程序的入口点。Main方法说明当执行时,类将做什么动作
{
/*
以下几点值得注意:
C# 是大小写敏感的。
所有的语句和表达式必须以分号(;)结尾。
程序的执行从 Main 方法开始。
与 Java 不同的是,文件名可以不同于类的名称。
*/
Calculator ca = new Calculator();
ca.Cal();
}
}
}