本帖最后由 xt654005440 于 2013-8-14 18:55 编辑
呵呵,这个帖子不错呢,赞楼主一个。
下面是我最开始看视频后写的四则运算程序:
namespace 计算器
{
public class Count //定义Count类
{
//private double x;
//private double y;
public double X { set; get; }
public double Y { set; get; }
}
public class Plus : Count //定义 Plus类,并继承Count
{
public double plus()
{
return X+Y;
}
}
public class Minus : Count //定义 Minus类,并继承Count
{
public double minus()
{
return X - Y;
}
}
public class Multiply : Count //定义 Multiply 类,并继承Count
{
public double multiply()
{
return X * Y;
}
}
public class Division : Count //定义 Division 类,并继承Count
{
public double division()
{
return X / Y;
}
}
public class Square : Count //定义 Square 类,并继承Count
{
public double square()
{
return X * X;
}
}
public class Jcheng : Count //定义 Jcheng 类,并继承Count
{
public double jcheng()
{
double s = 1;
while (X > 1)
{
s = s * X;
X--;
}
return s;
}
}
class Program
{
static void Main(string[] args)
{
start:
Console.WriteLine("请问你想进行哪种运算:\n1、加法运算 \n2、减法运算 \n3、乘法运算 \n4、除法运算 \n5、平方运算 \n6、阶乘运算 \n0、结束 \n");
Console.WriteLine("***********************************************************************");
switch (Convert.ToInt32(Console.ReadLine())) //输入数据,选择哪种运算
{
case 1:
Console.WriteLine("加法运算:");
Plus plus = new Plus();
plus.X = Convert.ToDouble(Console.ReadLine());
plus.Y = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("运算结果为: " + plus.plus());
break;
case 2:
Console.WriteLine("减法法运算:");
Minus minus = new Minus();
minus.X = Convert.ToDouble(Console.ReadLine());
minus.Y = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("运算结果为: " + minus.minus());
break;
case 3:
Console.WriteLine("乘法运算:");
Multiply multiply = new Multiply();
multiply.X = Convert.ToDouble(Console.ReadLine());
multiply.Y = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("运算结果为: " + multiply.multiply());
break;
case 4:
Console.WriteLine("除法运算:");
Division division = new Division();
division.X = Convert.ToDouble(Console.ReadLine());
division.Y = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("运算结果为: " + division.division());
break;
case 5:
Console.WriteLine("平方运算:");
Square square = new Square();
square.X = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("运算结果为: " + square.square());
break;
case 6:
Console.WriteLine("阶乘运算:");
Jcheng jcheng = new Jcheng();
jcheng.X = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("运算结果为: " + jcheng.jcheng());
break;
case 0: goto end;
default: Console.WriteLine("你的输入有误!\t");
break;
}
Console.WriteLine();
goto start; //执行goto语句,跳转到start标签处
end: //执行goto语句,跳转到end标签处
Console.WriteLine("结束计算,欢迎下次使用~!");
Console.ReadKey();
}
}
}
正常情况下,运行着段代码没什么问题,但是基于我个人习惯哈,在要选择分支的时候老是手抖多敲或者敲进不是数字的键,这时候麻烦来了!!
这里我老爱敲回车,在程序里不就以\n形式表现么,结果看下面:
看,正是上面标示的switch处的出现漏洞,即是若输入非法整数系统直接卡壳报错,那么我们就想办法在这里进行控制一下,让只有合法的输入才有效!
这里我用Tryparse方法做了改进,规避这个问题,代码如下:
int i=0; //定义变量
string s=Console.ReadLine(); //输入
if (int.TryParse(s, out i)) //转换并判断数据合法与否
{
Console.WriteLine();
}
else
{
Console.WriteLine("转换失败,你输入的为非法整数!");
}
switch (i) //选择分支
这里使用if (int.TryParse(s, out i)) ,先对输入进行一个判断,合法这进入分支结构,不合法及时反馈消息,再看我敲回车后的情形:
呵呵不在出现那种报错了~
再次支持版主这个整理,V5{:soso_e120:}
|