002 条件语句&循环语句

学习资料来源:bilibili

[if]

应该都会吧哈哈哈


[for]

for(初始化;条件;末尾)


[Switch]

	Console.WriteLine("请输入你的性别");
	string Str1 = Console.ReadLine();
	string title = "";
	switch (Str1)
	{
		case "男": title = "帅哥"; break;
		case "女": title = "美女"; break;
		default: title = "朋友"; break;

	}
	Console.WriteLine($"你好,{title}");

[Enum]

Enum枚举,用于代替常量(魔数),增加代码可读性

枚举类型 - C# 参考 | Microsoft Learn

	public void testEnum()
	{
		Console.WriteLine("输入一个数字");
		//获取该数字
		int num = int.Parse(Console.ReadLine());
		//将数字转化为enum类型并存到gender中,Enum.Parse(Type, String)
		SexType gender = (SexType)Enum.Parse(typeof(SexType),num.ToString());
		//switch判断
		switch (gender)
		{
			case SexType.Male: Console.WriteLine("男");break;
			case SexType.Female: Console.WriteLine("女"); break;
			case SexType.Other: Console.WriteLine("其他"); break;
			default:Console.WriteLine($"无法识别: {gender}");break;
		}
	}

[While]

while(condition){code},当condition为True时,会一直执行{code}


[Continue]

continue会停止当前代码块的执行,让循环进入下一个环节

int i = 0;
while(i < 4){
	i++;
	//当i == 2时跳过
	if(i == 2){
		continue;
	}
	Console.WriteLine(i);
}

[Break]

终止循环,进入下一条语句

 

[DoWhile]

do{code} while(condition);

int i = 0;
do{
	Console.WriteLine($"i={i}");
}while(i < 3)

[Ref关键字]

ref可以让变量存储在内存中的值被改变

public void testRefAndOut()
        {
            int i = 2, j,k = 2;
            Console.WriteLine($"i:{i}");//2
            Console.WriteLine("j未分配值");
            Console.WriteLine($"k:{k}");//2
            ChangeNumberRef(ref i);
            ChangeNumberOut(out j);
            ChangeNumber(k);
            //改变了i在内存中的值,所以为3
            Console.WriteLine($"i:{i}");
            //out直接在函数内部初始化,不需要另外初始化
            Console.WriteLine($"j:{j}");
            //不改变k在内存中的值,所以为2
            Console.WriteLine($"k:{k}");
        }
		public void ChangeNumberRef(ref int i)
        {
            i = 3; 

        }
        public int ChangeNumberOut(out int j)
        {
            j = 4;
            int b = 4;
            return b;
        }
        public void ChangeNumber(int k)
        {
            k = 5;
        }

完善计算器

        public void testCalculator()
        {
            //反复执行
            while (true)
            {
                Console.WriteLine("请输入算术题,按回车键结束(+,-,*,/,%)");
                //读取控制台输入的
                string inputStr = Console.ReadLine();
                Console.WriteLine($"{inputStr}");
                int calcType = -1;
                //int index = ParseTypeAndIndex(inputStr, ref calcType);
                int index = ParseTypeAndIndexByAry(inputStr, ref calcType);
                if (calcType == -1)
                {
                    Console.WriteLine("请输入+,-,*,/,%运算符!");
                    break;
                }
                CalcResult(inputStr, calcType, index);
                
            }
            Console.ReadLine();
        }
        private static void CalcResult(string str,int calcType,int index)
        {
            //获取字符串的长度
            int length = str.Length;

            //Substring(a,b)表示截取从下标a开始到一共index位的字符,不包括index

            string numStr1 = str.Substring(0, index);
            string numStr2 = str.Substring(index + 1, length - index - 1);

            //强制转换为float类型
            float num1 = float.Parse(numStr1);
            float num2 = float.Parse(numStr2);

            //用来保存结果
            float result = 0;
            //区分算法
            switch (calcType)
            {
                //匹配id
                case 0: result = num1 + num2; break;
                case 1: result = num1 - num2; break;
                case 2: result = num1 * num2; break;
                case 3: result = num1 / num2; break;
                case 4: result = num1 % num2; break;
                default: break;
            }
            Console.WriteLine($"{str}的结果为{result}");
        }

        //将可以使用的符号存入数组
        static string[] ary = new string[] { "+", "-", "*", "/" ,"%"};
        //用for 遍历匹配
        private static int ParseTypeAndIndexByAry(string str, ref int calcType)
        {
            //存放匹配到符号的位置,初始值为-1
            int index = -1;
            //遍历运算符数组
            for(int i = 0; i< ary.Length; i++)
            {
                //取出符号
                string tag = ary[i];
                //用符号匹配字符串中对应符号位置
                index = str.IndexOf(tag);
                if (index != -1)
                {
                    //分配id
                    calcType = i;
                    break;
                }
            }
            return index;
        }
        //用if else 逐个匹配
        private static int ParseTypeAndIndex(string str, ref int calcType)
        {
            //给符号一个id,并存储符号位置
            int index = str.IndexOf("+");
            if (index != -1)
            {
                calcType = 0;
            }else {
                index = str.IndexOf("-");
                if (index != -1)
                {
                    calcType = 1;
                }else
                {
                    index = str.IndexOf("*");
                    if (index != -1)
                    {
                        calcType = 2;
                    }else
                    {
                        index = str.IndexOf("/");
                        if (index != -1)
                        {
                            calcType = 3;
                        }
                    }
                }
            }
            return index;
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值