A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨礼文 中级黑马   /  2012-2-29 12:58  /  2848 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Console.WriteLine("请输入你对李四评定的等级?(A-E)");

            string input1 = Console.ReadLine();
            decimal salary1 = 5000m;
            bool isRight = false;
            switch (input1)
            {
                case "A":
                    salary1 += 500;
                    break;
                case "B":
                    salary1 += 200;
                    break;
                case "C":

                    break;
                case "D":
                    salary1 -= 200;
                    break;
                case "E":
                    salary1 -= 500;
                    break;
                default:// 匹配时和位置没有关系,只和值有关系
                    Console.WriteLine("你的输入有问题");

                    isRight = true;

                    break;
            }
            if (isRight == false)
            {
                Console.WriteLine("李四的工资为:" + salary1);
            }
            Console.ReadKey();

这是正确的代码

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

倒序浏览
这是swith-case的执行过程
执行过程:首先计算表达式,然后根据计算结果与匹配case后面的值,如果有匹配项,则执行匹配项后面的语句,直到break语句跳出switch-case.如果所有的case值都不匹配,那么有default则执行default后面的语句,直到break结束,如果没有default,则跳出switch-case,什么都不执行.

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
Console.WriteLine("请输入你对李四评定的等级?(A-E)");

            string input1 = Console.ReadLine();
            decimal salary1 = 5000m;
            switch (input1)
            {
                case "A":
                    salary1 += 500;
                    break;
                case "B":
                    salary1 += 200;
                    break;
                case "C":

                    break;
                case "D":
                    salary1 -= 200;
                    break;
                case "E":
                    salary1 -= 500;
                    break;
                default:
             Console.WriteLine("你的输入有问题");
                    break;
            }
                Console.WriteLine("李四的工资为:" + salary1);
                Console.ReadKey();
简化成这样也ok吧


评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
第一个错误: if (isRight == false) 把== 写成了=号 虽然运行不出错 但运行的结果出错.  ==是等于的意思  =是赋值的意思
第二个错误:把isRight = true;写在看break;之后,应写在default和brea之间.

0基础的童鞋们 自学视频时切莫急躁,切莫贪求速度.敲代码时 应三步一回头,打好基础,在c#中多个少个错个符号 意思将不再相同.将低级的错误扼杀在小心仔细心态的摇篮中.

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
bool isRight = false;
isRight = true;
if (isRight == false)

之前一直都不明白上面三句代码的意思,睡觉时想了下 想通了   

第一句 定义一个bool类型且赋值,
第二句 对isRight 重新赋值 目的是执行到这句代码 sRight的值变成true 不再是 false,是为了 不再执行后面if的语句
第三句  if (isRight == false)  当不执行default语句,则isRight的值没有变 仍然是false , 即可执行if语句.


后来为了验证我的想法  我用:
int a=0

a=1

if(a==0)

也可以实现.

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
本帖最后由 杨礼文 于 2012-2-29 13:27 编辑
贾宁 发表于 2012-2-29 13:06
Console.WriteLine("请输入你对李四评定的等级?(A-E)");

            string input1 = Console.ReadLine( ...


不ok  当你输入ABCDE之外的数字字母时  会显示  
                 你的输入有问题
                 李四的工资为5000

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马