嗯,有点简陋。
数据通常在控制台中以文本输入,所以要先把字符串转换为数值。(你用控件就不用换了......)
可以用Parse和TryParse来将字符串转为数值,它们的区别为1.如果Parse方法不可以转换此字符串就会报错例如double a=double.Parse("a");2.TryParse方法如果遇到不能转换的字符串就会返回false。如下代码:
public static void Changeover()//把字符串转为数据
{
if (double.TryParse(a, out a1))
{
if (double.TryParse(b, out a2))
{
}
}
}
注意一定要带out关键字
静态与整个类相关,静态方法不用类的实例调用可以直接调用,但不能访问实例成员(没有static限定符的都是实例成员),如果想对一个静态的字段访问要用类名如:A.a=3;
解决完转换后便是提供基础的+-*/的方法了
public void add()
{
Changeover();
WriteLine($"相加结果为{a1 += a2}");
}
public void Subtracts()
{
Changeover();
WriteLine($"相减结果为{a1 -= a2}");
}
public void times()
{
Changeover();
WriteLine($"相乘结果为{a1 *= a2}");
}
public void divide()
{
WriteLine($"相乘结果为{a1 /= a2}");
}
为了日后可以扩展或重写就把它们创立为方法,其实每个方法都应改加上virtual以方便日后继承
为了有可读性顺便加上阶乘和乘法表
public double Factorials(double value)
{
if (value == 0||value==1)
{
return 1;
}
return value *= Factorials(value - 1);
}
public double Table(double value)
{
for(double i = 0; i <= 10; i++)
{
double a = value;
WriteLine(a*= i);
}
return 0;
}
阶乘运用了一种叫递归的方法,但递归有时会导致内存溢出,因为每次调用都会存储处理数据。
迭代是一种更好的方法,虽然不那么简易
完整代码:
using System;
using static System.Console;
class A
{
static string a = ReadLine();
static string enter = ReadLine();
static string b = ReadLine();
static double a1;
static double a2;
public static void Changeover()//把字符串转为数据
{
if (double.TryParse(a, out a1))
{
if (double.TryParse(b, out a2))
{
}
}
}
public void add()
{
Changeover();
WriteLine($"相加结果为{a1 += a2}");
}
public void Subtracts()
{
Changeover();
WriteLine($"相减结果为{a1 -= a2}");
}
public void times()
{
Changeover();
WriteLine($"相乘结果为{a1 *= a2}");
}
public void divide()
{
WriteLine($"相乘结果为{a1 /= a2}");
}
public double Factorials(double value)
{
if (value == 0||value==1)
{
return 1;
}
return value *= Factorials(value - 1);
}
public double Table(double value)
{
for(double i = 0; i <= 10; i++)
{
double a = value;
WriteLine(a*= i);
}
return 0;
}
public static void Main(string[] vs)
{
var z = new A();
WriteLine("请输入一个值并输入你想进行的操作之后再次输入一个数");
WriteLine("+为进行加法操作,-为进行减法操作,*为乘法操作,/为除法操作,!为阶乘,table为你输入的值的乘法表");
if (enter == "+")
{
z.add();
}
else if (enter == "-")
{
z.Subtracts();
}
else if(enter=="*")
{
z.times();
}
else if(enter=="/")
{
z.divide();
}
else if(enter=="!")
{
Changeover();
WriteLine($"结果为{z.Factorials(a1)}");
}
else if (enter == "table")
{
Changeover();
z.Table(a1);
}
ReadLine();
}
}
小干货第2期:
你可以用#define预编译来提供给编译器一个符号,而#if在收到符号时才执行所包含的语句
#undef来删除符号
下期再见......