一、条件语句
也就选择语句,判断语句。
有三种形式。
1.单一条件的 if 语句
表现形式:
if(布尔表达式)
{
语句块;
}
例:
int a = 5;if(a>2){Console.WriteLine("输出的数为:"+a);}
只有a>2为真是,才会执行后面的语句,否则直接跳过这部分。
2.多个条件的 if 语句
也就是多个if语句组合。
表达形式如下:
if(布尔表达式1)
{
语句块;
}
if(布尔表达式2)
{
语句块;
}
。。。
if(布尔表达式n)
{
语句块;
}
//只要你想用并用得上,就可以多用。
//而这与其说是新内容,不如说是多用。
例:
int a = 5;if(a>2){Console.WriteLine("输出的数为:"+2);}if(a>5){Console.WriteLine("输出的数为:"+5);}if(a>8){Console.WriteLine("输出的数为:"+8);}
只要调节成立才会执行,所以第一个if会输出,第二个、第三个就不会输出。因为条件不成立,但却还是经过判断运行了。
3.二选一条件的 if 语句
也就是这个条件为假,会执行另一条语句。
类似三目运算符,a>b?a:b;
表达形式如下:
if(布尔表达式)
{
语句块 1;
}else{
语句块 2;
}
例:
inta=5;if(a>8){Console.WriteLine("输出的数为:"+8);}else{Console.WriteLine("输出的数为:"+a);}
因为a不大于8,所以会执行第5行,输出“输出的数为:5”;
4.多选一条件的 if 语句
也就是把多个if语句合并成一个连串的if语句。
表达形式如下:
if(布尔表达式 1)
{
语句块 1;
}else if(布尔表达式 2){
语句块 2;
}
...
else{
语句块 n;
}
例:
int a = 5;if(a>8){Console.WriteLine("输出的数为:"+8);}else if(a>5){Console.WriteLine("输出的数为:"+5);}else{Console.WriteLine("输出的数为:"+a);}
除了最后选项没有if外,其余的都需要有if,还得有判断表达式。
而且最后的else也是可以省略的,到时只要条件不成立,整个if语句都将被跳过。
二、示例
1.例:
使用 if-else 语句判断从控制台输入的整数是否为偶数。
class Program{static void Main(string[] args) {Console.WriteLine("请输入一个整数:"); //将从控制台输入的值转换成int类型 int num = int.Parse(Console.ReadLine()); if (num % 2 == 0) {Console.WriteLine(num+"是偶数!"); } else {Console.WriteLine(num+"不是偶数!"); } }}
分析:
首先第3行的Main,表示程序开始的地方。(就好像梦开始的地方?)
然后第5行为传统的输出,内容就是括号双引号里面的。
然后是第7行,表示手动输入一个数,并赋值给变量num。
Console.ReadLine()为键盘输入,就是运行后,会有一个闪烁的光标。
int.Parse();为转换为int类型,毕竟输入的好像是字符串类型。
然后就进行判断该数,除以2求余数是否等于0。
如果等于0,就执行if里面的语句。
如果不等于0,就执行else里面的语句。
2.上述的案例也可以只用if语句来完成。
class Program{static void Main(string[] args) {Console.WriteLine("请输入一个整数:"); //将从控制台输入的值转换成int类型 int num = int.Parse(Console.ReadLine()); String msg = num + "不是偶数!"; if (num % 2 == 0) {msg = num + "是偶数!"; } Console.WriteLine(msg); }}
这里是先确定它“不是偶数”,并赋给一个变量msg中。
然后判断是不是,如果是,再把msg变量给改成“是偶数”。
3.案例
使用多分支 if 语句完成对游戏账户积分等级的判断,判断的条件是当游戏积分为 0~100 时是初级、100~200 时是中级、200~500 时是高500以上时是特级。
class Program{static void Main(string[] args) {Console.WriteLine("请输入游戏积分(大于0的整数)"); int points = int.Parse(Console.ReadLine()); //如果输入的积分小于0则将其设置为0 if (points < 0) {points = 0; } if (points <= 100) {Console.WriteLine("您的游戏等级为初级"); }else if (points <= 300) {Console.WriteLine("您的游戏等级为中级"); }else if (points <= 500) {Console.WriteLine("您的游戏等级为高级"); }else {Console.WriteLine("您的游戏等级为特级"); } }}
分析:
首先依旧是输出文字,和手动输入一个数字。
然后就进入if-else if-else语句的使用判断。
不过在那之前,先通过if语句判断输入的数字是不是负数。
然后再进行逐一进行判断,并输出。
由于是逐一进行判断,所以当输入350时,其实还经过points <= 100,所以也就完成了这个数字,大于100,小于300.
三、switch语句
类似if语句,但这里相对更精确更具体一样。
表达形式如下:
switch(表达式)
{
case 值 1:
语句块 1;
break;
case 值 2:
语句块 2;
break;
...
default:
语句块 n;
break;
}
例:
inta=3;switch (a){case 1: Console.WriteLine("1"); break; case 2: Console.WriteLine("2"); break; default: Console.WriteLine(a); break;}
注意:
case后面是冒号,不是分号。
switch 语句中表达式的结果必须是整型、字符串类型、字符型、布尔型等数据类型。
如果 switch 语句中表达式的值与 case 后面的值相同,则执行相应的 case 后面的语句块。
如果所有的 case 语句与 switch 语句表达式的值都不相同,则执行 default 语句后面的值。
default 语句是可以省略的。
需要注意的是,case 语句后面的值是不能重复的。
break是中断语句,目的是跳出整体switch 语句。
如果不写break,就会继续往下执行,直到遇到break,或者直到结束。
inta=5;switch (a){case 1:case2: Console.WriteLine("1"); break;case3:case4: Console.WriteLine("2"); break; default: Console.WriteLine(a); break;}
以上这种方式也可以,表示a如果是1和2,就输出1;a如果是3和4,就输出2;否则是a的值。
如果不写default:和里面的代码块,就会什么也不输出。
四、示例
1.使用 switch...case 语句根据学生的考试成绩来判断等级。
如果成绩在 90 分以上是优秀;
如果成绩为 80~90 分是良好;
如果成绩为 60~80 分是及格;
如果成绩在 60 分以下是不及格。
class Program{static void Main(string[] args) {Console.WriteLine("请输入学生考试的成绩(0~100的整数)"); int points = int.Parse(Console.ReadLine()); switch (points / 10) {case 10:Console.WriteLine("优秀");break; case 9:Console.WriteLine("优秀");break; case 8:Console.WriteLine("良好");break; case 7:Console.WriteLine("及格");break; case 6:Console.WriteLine("及格");break; default:Console.WriteLine("不及格");break; } }}
分析:
因为需要具体的精确,所以这里除以10,是为了忽略个位数的数。
毕竟要是都输入进去,代码量会多么巨大。
如:
case 100:case 99:case98:case97:case96:case95:case94:case93:case92:case91: Console.WriteLine("优秀"); break;
所以除以10,就更好的节约了代码量。
当然,如果不是按整数的要求,也不好这么干。
2.上述例子,也可以缩减成如下形式。
class Program{static void Main(string[] args) {Console.WriteLine("请输入学生考试的成绩(0~100的整数)"); int points = int.Parse(Console.ReadLine()); if(points < 0 || points > 100) {points = 0; } switch (points / 10) {case 10: case 9:Console.WriteLine("优秀");break; case 8:Console.WriteLine("良好");break; case 7: case 6:Console.WriteLine("及格");break; default:Console.WriteLine("不及格");break; } }}