1 if单选择结构
这个其实很简单了,其语法就是if(布尔表达式) {语句块};
public class TestIf {
public static void main(String[] args) {
double d = Math.random(); //返回【0,1)之间的随机数
System.out.println(d);
int h = (int)(6*Math.random()+1);
System.out.println(h);
if(h<=3){
System.out.println("小");
}
}
}
这个也很好理解,其语法结构为:if(布尔表达式){语句块1} else {语句块2}
/**
* 测试if-else双选择结构
*/
public class TestIfElse {
public static void main(String[] args) {
int h = (int)(6*Math.random()+1);
System.out.println(h);
if(h<=3){
System.out.println("小");
}else {
System.out.println("大");
}
}
}
这个在实战中用的会比较多了,具体的语法结构如下:
if(布尔表达式1){
语句块1;
} else if(布尔表达式2){
语句块2;
} ...
else if(布尔表达式n){
语句块n;
} else {
语句块n+1
}
简单有一个小栗子来熟悉一下语法结构:
public class TestIfElseIfElse {
public static void main(String[] args) {
int weekday = (int)(7*Math.random()+1);
System.out.println("今天是星期"+weekday+" ,我们晚饭吃 ");
if(weekday==1){
System.out.println("牛肉!");
} else if(weekday==2){
System.out.println("鸡肉!");
} else if(weekday==3){
System.out.println("鱼肉!");
} else if(weekday==4){
System.out.println("猪肉!");
} else if(weekday==5){
System.out.println("狗肉!");
} else {
System.out.println("素,因为周末不吃肉!");
}
}
}
这个和多个if-else 的效果差不多,但是一般来说switch只用于当布尔表达式是等值判断的情况,而当布尔表达式为区间判断的时候,一般还是用if-else多选择结构来完成。大家可以先看看switch的语法结构:
switch(表达式){
case 值1:
语句序列1;
[break;]
case 值2:
语句序列2;
[break;]
......
[default:
默认语句;]
}
这里对于新手来说会有一个坑需要注意的,那就是switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句或者是switch的结尾。所以说一般每一个case下的语句序列中,都需要加上break,这样子才是我们一般想要的结果。
我们可以测试一下不加break,会有什么效果:
public class TestSwitch {
public static void main(String[] args) {
int month = 1; //+ (int)(12*Math.random()+1);
System.out.println("月份:"+month);
switch (month){
case 1:
System.out.println("一月份!");
case 2:
System.out.println("二月份!");
case 3:
System.out.println("三月份!");
default:
System.out.println("其他月份!");
break;
}
}
}
/**
* 月份:1
* 一月份!
* 二月份!
* 三月份!
* 其他月份!
*/
我还测试了其他的case,得出一个结论就是:break;语句"不是必须要写的",但是如果不写,如果一旦某个case相应的值成功,但内部没有break语句,那么将会无条件(不再进行case匹配)的继续向下执行其它case中的语句,直到遇到break;语句或者到达switch语句结束。
所以,还是建议在每个case 的内部写上break吧(一般情况下)