C#学习笔记(六):循环嵌套、复杂数据类型和枚举
复杂数据类型
默认情况:0,1,2,3
赋值情况:0,3,4,5;//修改初始值,后面都会改变
定义在class外面,作用域更大
定义在class里面(类种类),只能在类里使用
枚举作用:方便把不同角色的属性归类,避免混淆
只有枚举项是用逗号分隔
非排他性—标志性枚举
enum(关键字) 枚举名(自定义的类型名称)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace m1w2d2_complex_datatype { enum QQSta { Qme, Online, Office, Leave, Busy, } enum GameSta { MenuSta = 1, PlaySta = 2, ExitSta = 3, } enum Occupation { 战士 = 1, 道士 = 2, 法师 = 3, } class Program { static void Main(string[] args) { #region 枚举 //基本数据类型 //1、定义变量,2、使用变量 //复杂数据类型 //1,定义类型,2、定义这个类型的变量、2、使用变量 //枚举:一般情况我们用枚举来表示一组状态的集合 //定义类型 一般情况下我们都放在类外面定义 // enum 自定义枚举名 //{ //成员(枚举项), //成员(枚举项), //} //每个枚举项都可以赋整数值 //如果没有赋值,他的值是前一枚举项的值+1 //第一个枚举项如果不赋值,默认值0 //赋值原因:给枚举项建立数学联系(属性相克) //定义这个类型的变量时,枚举的值,只能是所规定的枚举项 //自定义枚举名 变量名 = 自定义枚举名.某一枚举项 //定义QQ状态的枚举,Qme,Online,Office,Leave,Busy //提示用户选择一个在线状态,我们接受,并将用户的输入转换成枚举类型。 //整型 int a;a是一个int型的变量,int是整型 //enum QQSta myQQSta;myQQSta是一个QQSta型的变量,QQSta是enum QQSta myQQSta = QQSta.Leave; while (true) { Console.WriteLine("请输入用户状态:1、Qme,2、Online,3、Office,4、Leave,5、Busy"); bool isRightInput = false; string input = Console.ReadLine(); switch (input) { case "1": myQQSta = QQSta.Qme; isRightInput = true; break; case "2": myQQSta = QQSta.Online; isRightInput = true; break; case "3": myQQSta = QQSta.Office; isRightInput = true; break; case "4": myQQSta = QQSta.Leave; isRightInput = true; break; case "5": myQQSta = QQSta.Busy; isRightInput = true; break; default: Console.WriteLine("操作错误,请重新输入"); Console.WriteLine(); break; } if (isRightInput) break; } Console.WriteLine("操作正确"); Console.WriteLine("操作正确,你现在的状态是{0}", myQQSta); #endregion #region 枚举的练习 //定义一个游戏的状态,MenuSta,PlaySta,ExitSta, //1、定义一个枚举类型 //最好在类的外面 //成员就是我们需要的状态 //成员之间用逗号分割 //2、定义一个变量 GameSta myGameSta = GameSta.MenuSta; //状态都是排他的状态 //标志枚举:可以做非排他状态 //3、使用这个变量 while (true) { Console.WriteLine("请输入游戏状态:1、MenuSta,2、PlaySta,3、ExitSta"); bool isRightInput = false; string input = Console.ReadLine(); switch (input) { case "1": myGameSta = GameSta.MenuSta; isRightInput = true; break; case "2": myGameSta = GameSta.PlaySta; isRightInput = true; break; case "3": myGameSta = GameSta.ExitSta; isRightInput = true; break; default: Console.WriteLine("操作错误,请重新输入"); Console.WriteLine(); break; } if (isRightInput) break; } Console.WriteLine("操作正确,你现在的状态是{0}", myGameSta); #endregion #region 枚举的转换 //枚举与整型之间的转换 //通过强制转换符可以将枚举和整型进行转换 //如果将一个整型 转成 枚举 而没有对应的枚举项 GameSta myGameSta = GameSta.MenuSta; int a = (int)myGameSta; Console.WriteLine(a); myGameSta = (GameSta)2; Console.WriteLine(myGameSta); Console.WriteLine("请输入游戏状态:1、menusta,2、playsta,3、exitsta"); GameSta myGameSta = (GameSta)int.Parse(Console.ReadLine()); string strGameSta = myGameSta.ToString(); Console.WriteLine("操作正确,你现在的状态是{0}", strGameSta); #endregion #region 枚举与字符串之间的转换 //枚举转字符串 //对应的变量,调用toString()方法,可以将枚举转字符串 //将字符串转成枚举 //我们用Parse()可以将字符串转成枚举 //由于自定义类型中没有Parse(),所以我们需要调用Enum.Parse(); //Enum.Parse()不会知道你是需要转换到哪个自定义的枚举类 //我们要将自定义的枚举类型告诉他,作为他的第一个参数,使用到typeof(); //typeof()在C#中用于取类型 //Enum.Parse()在参数齐备的情况会将字符串转成object //我们用强制转换符可以把这个object转换成对应的枚举 //如果你给定的字符串在对应的枚举项中没有,会转换错误 Occupation gameSta = (Occupation)Enum.Parse(typeof(Occupation), "道士"); Console.WriteLine(gameSta); #endregion } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace m1w2d2_exercise { class Program { static void Main(string[] args) { //在控制台上输出九九乘法表 //1 * 1 = 1 ? //2 * 1 = 2 ? 2 * 2 = 4 ? //3 * 1 = 3 ? 3 * 2 = 6 ? 3 * 3 = 9 ? //4 * 1 = 4 ? 4 * 2 = 8 ? 4 * 3 = 12 ? 4 * 4 = 16 ? //5 * 1 = 5 ? 5 * 2 = 10 ? 5 * 3 = 15 ? 5 * 4 = 20 ? 5 * 5 = 25 ? //6 * 1 = 6 ? 6 * 2 = 12 ? 6 * 3 = 18 ? 6 * 4 = 24 ? 6 * 5 = 30 ? 6 * 6 = 36 ? //7 * 1 = 7 ? 7 * 2 = 14 ? 7 * 3 = 21 ? 7 * 4 = 28 ? 7 * 5 = 35 ? 7 * 6 = 42 ? 7 * 7 = 49 ? //8 * 1 = 8 ? 8 * 2 = 16 ? 8 * 3 = 24 ? 8 * 4 = 32 ? 8 * 5 = 40 ? 8 * 6 = 48 ? 8 * 7 = 56 ? 8 * 8 = 64 ? //9 * 1 = 9 ? 9 * 2 = 18 ? 9 * 3 = 27 ? 9 * 4 = 36 ? 9 * 5 = 45 ? 9 * 6 = 54 ? 9 * 7 = 63 ? 9 * 8 = 72 ? 9 * 9 = 81 for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { Console.Write("{0} * {1} = {2} \t ", i, j, (i * j));//符号\t是制表符 } Console.WriteLine(); } //猜数字游戏:要求用户1输入一个数字(0<x<=100) //游戏规则: //a.用户只能猜10次,十次内每次根据用户输入的数据提示用户当前猜的值是太 //大了还是太小了,如果在前5次用户猜中则提示用户:“你太厉害了,第_次就猜中了。” //b.如果用户猜中了,但是超过5次则提示用户:“不错,不错,猜对了!” //c.如果用户在最后一次猜中了则提示用户:“海底捞针啊,你真是太幸运了!” //d.如果用户超过十次都没有猜中则提示用户:“对不起,你已经猜了10次了, //不能再猜了。” Random roll = new Random(); int numRandom; numRandom = roll.Next(1, 101); Console.Write(numRandom); int times = 0; bool isRight = false; Console.WriteLine("请用户1输入一个数字(0<x<=100)"); int numInput = int.Parse(Console.ReadLine()); for (int i = 1; i <= 10; i++) { times++; if (numInput == numRandom) { isRight = true; break; } else if (numInput > numRandom) { Console.Write("当前猜的值大了"); Console.WriteLine(); numInput = int.Parse(Console.ReadLine()); } else if (numInput < numRandom) { Console.Write("当前猜的值小了"); Console.WriteLine(); numInput = int.Parse(Console.ReadLine()); } } if (isRight) { if (times <= 5) { Console.Write("你太厉害了,第{0}次就猜中了。", times); } else if (5 < times && times < 10) { Console.Write("不错,不错,猜对了!"); } else if (times == 10) { Console.Write("海底捞针啊,你真是太幸运了!"); } } else { Console.Write("对不起,你已经猜了10次了,不能再猜了"); } Random roll = new Random(); int numRandom; numRandom = roll.Next(1, 101); Console.Write(numRandom); int times = 0; bool isRight = false; Console.WriteLine("请用户1输入一个数字(0<x<=100)"); int numInput = int.Parse(Console.ReadLine()); } } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 上周热点回顾(1.20-1.26)