2019.11.14
Video
传智播客-C#基础-第三天
09 比较三个数字中的最大值
10 try-catch异常捕获
11 三个练习
12 switch-case
13 小结
传智播客-C#基础-第三天
01 复习
02 switch-case 练习
Note
1.try-catch异常捕获
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 try 2 { 3 可能会出现异常的代码; 4 } 5 catch 6 { 7 出现异常后要执行的代码; 8 }
执行过程:
当try中的出现异常的时候,出现异常的这行代码后面的代码不会执行,而是直接跳到catch中执行catch的代码。
使用规律,哪行代码有可能出现异常,就try一下。
2.变量的作用域
能够访问到这个变量的范围
变量的作用域一般从申明他的那个大括号开始,到这个大括号所对应的结束的大括号
3.如果想要让某些代码在满足某些条件的时候执行,这个时候我们使用bool类型的变量解决
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using static System.Console; 3 using static System.Convert; 4 5 namespace try-catch 6 { 7 class Program 8 { 9 static void Main(string[] args) 10 { 11 int number = 0; 12 WriteLine("请输入 一个数字:"); 13 bool a = true; 14 15 try 16 { 17 number = Convert.ToInt32(ReadLine()); 18 WriteLine("你看我执不执行!!!"); //没有出异常代码执行,否则不执行 19 } 20 catch 21 { 22 Console.WriteLine("输入的字符串不能转换成数字,程序退出"); 23 a = false; 24 } 25 if (a) 26 { 27 WriteLine($"您输入的数字是{number}"); 28 ReadKey(); 29 } 30 31 } 32 } 33 }
4.switch-case
用来做多条件的定值判断
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 switch(要判断的变量或者表达式) 2 { 3 case 值1: 要执行的代码; 4 break; 5 case 值2: 要执行的代码; 6 break; 7 case 值2: 要执行的代码; 8 break; 9 ... 10 default: 要执行的代码 11 break; 12 }
执行过程:
程序运行到switch,首先计算switch后面所带的小括号中的变量或者表达式的值
拿着计算出来的结果跟每个case的值进行匹配,一旦匹配成功,则执行该case所带的代码块
如果跟每个case多带的值不匹配,则看当前switch-case中是否有default
如果有defalut,则执行default所带的代码块,否则的话,什么都不做
5.总结
1)算数运算符 ++(前/后)--(前/后)
2)复合赋值运算符 += -= *= /= %=
3)关系运算符 > < >= <= == !=
4)逻辑运算符 && || !
5)布尔类型 bool
6)分支结构 if结构 if-else机构
7)选择结构 if else-if结构(判断多条件区间) switch-case结构(判断多条件定值)
Practise
比较三个数字中的最大值
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using static System.Console; 3 4 namespace 最大值 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 WriteLine("请输入第一个数字:"); 11 int a = Convert.ToInt32(ReadLine()); 12 WriteLine("请输入第二个数字:"); 13 int b = Convert.ToInt32(ReadLine()); 14 WriteLine("请输入第三个数字:"); 15 int c = Convert.ToInt32(ReadLine()); 16 17 if(a > b) 18 { 19 if(a > c) 20 { 21 WriteLine($"最大值是{a}"); 22 } 23 else{ //c>a 24 WriteLine($"最大值是{c}"); 25 } 26 27 } 28 else //b>a 29 { 30 if(b > c) 31 { 32 WriteLine($"最大值是{b}"); 33 } 34 else 35 { 36 WriteLine($"最大值是{c}"); 37 } 38 } 39 ReadKey(); 40 41 /*if(a>b && a>c) 42 { 43 WriteLine($"最大值是{a}"); 44 } 45 else if(b>a && b>c) 46 { 47 WriteLine($"最大值是{b}"); 48 } 49 else 50 { 51 WriteLine($"最大值是{c}"); 52 }*/ 53 } 54 } 55 }
提示用户输入密码,如果密码是"88888"则提示正确
否则要求再输入一次,如果密码是“88888”则提示正确
否则提示错误,程序结束(如果我的代码里有英文还要转换吗?密码:abc1)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using static System.Console; 3 4 namespace 练习1 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 WriteLine("请输入密码:"); 11 string number = ReadLine(); 12 if(number == "88888") 13 { 14 WriteLine("您输入的密码正确"); 15 } 16 else 17 { 18 WriteLine("您输入的密码错误,请再次输入"); 19 number = ReadLine(); 20 if (number == "88888") 21 { 22 WriteLine("您输入的密码正确"); 23 } 24 } 25 ReadKey(); 26 } 27 } 28 }
提示用户输入用户名,然后提示输入密码,如果用户名是"admin"并且密码是“88888”,则提示以正确
否则,如果用户名不是“admin”还提示用户用户名不存在
如果用户名是admin,则提示密码错误
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using static System.Console; 3 4 namespace 练习2 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 WriteLine("请输入你的用户名: "); 11 string account = ReadLine(); 12 WriteLine("请输入你的密码: "); 13 string number = ReadLine(); 14 15 if (account == "admin" && number == "88888") 16 { 17 WriteLine("正确"); 18 } 19 else if (number == "88888") 20 { 21 WriteLine("您的用户名不存在"); 22 } 23 else if(account == "admin") 24 { 25 WriteLine("密码错误"); 26 } 27 else 28 { 29 WriteLine("用户名和密码都错啦!"); 30 } 31 ReadKey(); 32 } 33 } 34 }
提示用户输入年龄,如果大于等于18,则告诉用户可以查看
如果小于10岁,则告知不允许查看
如果大于等于10岁并且小于18岁,则提示用户是否继续查看(yes,no)
如果输入yes则提示用户请查看,否则提示“退出,你放弃查看”
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using static System.Console; 3 4 5 namespace ConsoleApp10 6 { 7 class Program 8 { 9 static void Main(string[] args) 10 { 11 WriteLine("请输入你的年龄: "); 12 int age = Convert.ToInt32(ReadLine()); 13 if(age > 18) 14 { 15 WriteLine("你可以查看"); 16 } 17 else if(age > 10) 18 { 19 WriteLine("你是否查看,(yes,no)"); 20 string number = ReadLine(); 21 if(number == "yes") 22 { 23 WriteLine("你可以查看"); 24 } 25 else 26 { 27 WriteLine("你选择了不查看"); 28 } 29 } 30 else 31 { 32 WriteLine("你不可以查看"); 33 } 34 ReadKey(); 35 } 36 } 37 }
李四的年终工作评定
如果定为A级,则工资涨500元
如果定为B级,则工资涨200元
如果定为C级,则工资不变
如果定为D级,则工资降200元
如果定为E级,则工资降500元
设李四的原工资为5000元,请用户输入李四的评级,然后显示李四来年的工资
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using static System.Console; 3 4 namespace ConsoleApp11 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 WriteLine("请输入李四的评级: "); 11 string level = ReadLine(); 12 double salary = 5000; 13 bool b = true; 14 if(level == "A") 15 { 16 salary += 500; 17 } 18 else if(level == "B") 19 { 20 salary += 200; 21 22 } 23 else if (level == "C") 24 { 25 26 } 27 else if (level == "D") 28 { 29 salary -= 200; 30 31 } 32 else if (level == "E") 33 { 34 salary -= 500; 35 36 } 37 else 38 { 39 WriteLine("输入错误,请重新输入"); 40 b = false; 41 } 42 if (b) 43 { 44 WriteLine($"李四明年的工资是{salary}"); 45 } 46 ReadKey(); 47 } 48 } 49 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using static System.Console; 3 4 namespace ConsoleApp12 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 WriteLine("请输入李四的年终评定:"); 11 string level = ReadLine(); 12 int salary = 5000; 13 bool b = true; 14 switch (level) 15 { 16 case "A": salary += 500; 17 break; 18 case "B": salary += 200; 19 break; 20 case "C": 21 break; 22 case "D": salary -= 200; 23 break; 24 case "E": salary -= 500; 25 break; 26 default: WriteLine("输入有误!"); 27 b = false; 28 break; 29 } 30 if (b) 31 { 32 WriteLine($"李四明年的工资是{salary}"); 33 } 34 ReadKey(); 35 } 36 } 37 }
输入这几个人的名字,计算这几个人上辈子都是干什么的?
(老杨、老苏、老邹、老牛、老蒋、老王、老马)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using static System.Console; 3 4 namespace ConsoleApp1 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 Console.WriteLine("请输入要计算的人的姓名"); 11 string name = ReadLine(); 12 13 switch(name) 14 { 15 case "老杨": WriteLine("老杨上辈子是折翼的天使"); 16 break; 17 case "老苏": WriteLine("老苏上辈子是老鸨子"); 18 break; 19 case "老邹": WriteLine("老邹上辈子是老苏手下的偷拍"); 20 break; 21 case "老虎": WriteLine("上辈子被武松挂了"); 22 break; 23 case "老牛": WriteLine("上辈子是cow"); 24 break; 25 default: WriteLine("上辈子没这个人"); 26 break; 27 } 28 ReadKey(); 29 } 30 } 31 }
对员工的结业成绩评测
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using static System.Console; 3 4 namespace ConsoleApp2 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 WriteLine("请输入考试成绩"); 11 int score = Convert.ToInt32(ReadLine()); 12 13 switch(score/10) 14 { 15 case 10 : WriteLine("A"); //当连续几个的case代码一致,前面代码可以删除 16 return; 17 case 9: WriteLine("A"); 18 return; 19 case 8: WriteLine("B"); 20 return; 21 case 7: WriteLine("C"); 22 return; 23 case 6: WriteLine("D"); 24 return; 25 default: WriteLine("E"); 26 return; 27 } 28 ReadKey(); 29 } 30 } 31 }