———————- Windows Phone 8手机开发、.Net培训、期待与您交流! ———————-
分别用if-else和switch-case(主要演示)来搞定同个工作
题: //李四的年终工作评定,如果定位A级,则工资涨500元,如果B,则涨200,如果C,工资不变,如果D,降200,如果E,降500。设李四原工资5000,请输入评级,然后显示李四的工资。
1) 用if-else来搞定
if-else
1 Console.WriteLine("请输入你对李四的评定等级(A-E)");
2 string input = Console.ReadLine();
3 decimal salary = 5000m;//加m表示5000为decimal类型,不加表示int类型。加不加都可以,加是最好的
4
5 if (input == "A")
6 {
7 //salary = salary + 500;
8 salary += 500;//这样比较简单,让salary这个变量自己加了500
9
10 }
11 else if (input == "B")
12 {
13 salary += 200;
14 }
15 else if (input == "C")
16 {
17 }
18 else if (input == "D")
19 {
20 salary -= 200;
21 }
22 else if (input == "E")
23 {
24 salary -= 500;
25 }
26 else
27 {
28 Console.WriteLine("输入有误,只能输入大写ABCDE");
29
30 }
31
32 Console.WriteLine("李四的工资为:" + salary);
33
34 Console.ReadKey();
调试中,出现两个bug。如果输入的范围不在A~E内,如输入个‘T’值或者小写字母,都会显示李四工资为5000。![](https://images0.cnblogs.com/blog/521559/201305/05105308-5235c17f43854afe8fda9f04a5052e6d.jpg) ![](https://images0.cnblogs.com/blog/521559/201305/05105320-b2fb64b2990345969e242d1e05c2a10b.jpg)
解决方案:定义一个bool类型,来判断执行哪个语句。处理完代码:
调试完成后的代码
1 Console.WriteLine("请输入你对李四的评定等级(A-E)");
2 string input = Console.ReadLine();
3 decimal salary = 5000m;//加m表示5000为decimal类型,不加表示int类型。加不加都可以,加是最好的
4 bool flag = false;
5 if (input == "A")
6 {
7 //salary = salary + 500;
8 salary += 500;//这样比较简单,让salary这个变量自己加了500
9
10 }
11 else if (input == "B")
12 {
13 salary += 200;
14 }
15 else if (input == "C")
16 {
17 }
18 else if (input == "D")
19 {
20 salary -= 200;
21 }
22 else if (input == "E")
23 {
24 salary -= 500;
25 }
26 else
27 {
28 Console.WriteLine("输入有误,只能输入大写ABCDE");
29 flag = true;
30 }
31 if (flag == false)
32 {
33 Console.WriteLine("李四的工资为:" + salary);
34 }
35 Console.ReadKey();
36 }
//用switch-case实现上面功能switch-case的语法:
switch(表达式)
{
case值1:语句块1;
break;(在其他编程语言中不加break可能只会使程序报错,但在c#中break是必须加的,不然就会出错)
case值2:语句块2;
break;
default:语句块3;
break;
}
switch-case
1 Console.WriteLine("请输入你对李四的评定等级(A-E)");
2 string input = Console.ReadLine();
3 decimal salary = 5000;
4 bool flag = false;
5 switch (input)//输入的值如果与input的值想匹配则执行下面A~E的值,如果不匹配则执行default的内容
6 {
7 case"A":
8 salary+=500;
9 break;
10 case"B":
11 salary+=200;
12 break;
13 case"C":
14 break;
15 case"D":
16 salary -= 200;
17 break;
18 case "E":
19 salary -= 500;
20 break;
21 default:
22 Console.WriteLine("你的输入有问题");
23 flag = true;
24 break;
25 }
26 if (flag == false)
27 {
28 Console.WriteLine("李四的工资为" + salary);
29 }
30 Console.ReadKey();
31 }
-------
switch-case的执行过程:
执行过程:首先计算表达式,然后根据计算结果去匹配case后面的值。如果有匹配,则执行匹配后面的语句,直到break语句跳出switch-case。如果所有的case值都不匹配,那么有default则执行default后面的语句,直到break结束。如果没有default则跳出switch-case,什么都不执行。
问题:
把 default:
Console.WriteLine("你的输入有问题");
flag = true;
break;移到caseB下面。输入T,会显示什么?
//default移到哪都没关系。只有当找不到匹配项的时候,才会走default。跟default的位置没有关系!
———————- Windows Phone 8手机开发、.Net培训、期待与您交流! ———————-
详细请查看:http://edu.csdn.net/heima/
|