复杂数据类型
默认情况: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());
}
}
}