选择结构
if单选择结构
我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示:
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}
意义:if语句对条件表达式进行一次测试,若测试为真,则执行下面的语句,否则跳过该语句。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
//equals判断字符串给是否相等
if (s.equals("hello")){
System.out.println(s);
}
System.out.println("end");
scanner.close();
}
【equals方法是用来进行字符串的比较的,之后会详解,这里大家只需要知道他是用来比较字符串是否一致的即可!和==是有区别的。】
if双选择结构
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
意义:当条件表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。
【演示】我们来写一个示例:考试分数大于60就是及格,小于60分就不及格。
public static void main(String[] args) {
//考试分数大于60分及格小于60不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score>=60){
System.out.println("考试成绩及格");
}
else{
System.out.println("考试成绩不及格");
}
if多选择结构
我们发现上面的示例不符合实际情况,真实的情况还可能存在ABCD,存在区间多级判断。比如90-100就是A,80-90 就是B…等等,在生活中我们很多时候的选择也不仅仅只有两个,所以我们需要一个多选择结构来处理这类问题!
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码 }
else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。
【演示】我们来改造一下上面的成绩案例,学校根据分数区间分为ABCD四个等级!
public static void main(String[] args) {
//考试成绩90~100 A级,80~90 B级,70~80 C级,60~70 D级
Scanner scanner = new Scanner(System.in);
/*
if语句最多有一个else语句,else语句在所有的else if语句之后
if语句可以有若干个else if语句,它们必须在else语句之前
一旦其中一个else if语句检测为true,其它的else if以及else语句都将跳过执行
*/
System.out.println("请输入考试成绩:");
int score = scanner.nextInt();
if(score == 100){
System.out.println("满分,你真棒!");
}else if(score >= 90 && score < 100){
System.out.println("A级");
}else if(score >= 80 && score < 90){
System.out.println("B级");
}else if(score >= 70 && score < 80){
System.out.println("C级");
}else if(score >= 60 && score < 70){
System.out.println("D级");
}else if(score < 60){
System.out.println("成绩不及格!");
}else {
System.out.println("成绩不合法!");
}
scanner.close();
}
嵌套的if结构
使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。你可以像 if 语句一样嵌套
else if…else。
if(布尔表达式 1){
如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
如果布尔表达式 2的值为true执行代码
}
}
【记住一点就好,所有的流程控制语句都可以互相嵌套,互不影响!】
switch多选择结构
多选择结构还有一个实现方式就是switch case 语句。
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
switch case执行时,一定会先进行匹配,匹配成功返回当前case的值,再根据是否有break,判断是否继续输出,或是跳出判断。
public static void main(String[] args) {
//case 穿透 //switch 匹配一个具体的值
char grade = 'C';
switch (grade){
case'A':
System.out.println("优秀");
break;//可选
case'B':
System.out.println("良好");
break;//可选
case'C':
System.out.println("及格");
break;//可选
case'D':
System.out.println("再接再厉");
break;//可选
case'E':
System.out.println("挂科");
break;//可选
default:
System.out.println("未知等级");
}
如果 case 语句块中没有 break 语句时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出。如果后续的 case 语句块有 break 语句则会跳出判断。【case穿透】
public static void main(String[] args) {
String name = "懂哥";
//JDK7的新特性,表达式结果是字符串!!!
//字符本质还是数字
//反编译 java---class (字节码文件)----反编译(IDEA)
switch (name){
case "懂":
System.out.println("懂");
break;
case "哥":
System.out.println("哥");
break;
default:
System.out.println("泡面王子");
}
}