———————- 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。
解决方案:定义一个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培训、期待与您交流! ———————-