if单选择结构(只有一个判断)
·我们很多时候需要判断一个的东西是否可行,然后我们才去执行,这样一个过程在程序中用if表示(如图)
·语法:
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}
实例
package com.yu.struct;
import java.util.Scanner;
public class IfDemo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
//equals:判断字符串是否相等
//如果s等于Hello
if(s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
}
if双选择结构(有两个判断)
如图:
·语法:
if(布尔表达式){
//如果布尔表达式值为true
}else{
//如果布尔表达式值为false
}
实例
package com.yu.struct;
import java.util.Scanner;
public class IfDemo02 {
public static void main(String[] args) {
//考试分数大于60就是及格,小于60不及格
System.out.println("请输入分数:");
Scanner scanner = new Scanner(System.in);
double score = scanner.nextDouble();
if(score>=60){
System.out.println("考试及格");
}
else{
System.out.println("考试不及格");
}
scanner.close();
}
}
if多选择结构(多个判断)
·语法:
If(布尔表达式 1){
//如果表达式 1的值为true则执行代码
}
else if(布尔表达式 2){
//如果表达式 2的值为true则执行代码
}
else if(布尔表达式 3){
//如果表达式 3的值为true则执行代码
}
else {
//如果以上表达式都不为true则执行代码
}
实例
public class IfDemo03 {
public static void main(String[] args) {
System.out.println("请输入分数:");
Scanner scanner = new Scanner(System.in);
double score = scanner.nextDouble();
if(score==100){
System.out.println("满分!");
} else if (score<100 &&score>=90) {
System.out.println("优秀");
}
else if (score<90 &&score>=80) {
System.out.println("良好");
}else if (score<80 &&score>=70) {
System.out.println("中等");
}else if (score<70 &&score>=60) {
System.out.println("及格");
} else if (score<60 && score>=0) {
System.out.println("不及格");
} else {
System.out.println("成绩不合法");
}
scanner.close();
}
}
注意:
·if语句至多有1个else语句,else语句在所有的else if之后
·if语句可以有若干个else if 语句,他们必须在else语句之前,一旦其中一个else if语句检测为TRUE,其他的else if语句以及else语句都将跳过执行
嵌套的if结构(在if中嵌套if)
·语法:
if(布尔表达式 1){
//如果布尔表达式 1的值为true则执行代码
if(布尔表达式 2 ){
//如果布尔表达式 2的值为true则执行代码
}
}
switch多选择结构(匹配一个具体的值)
- ·多选择结构还有一个实现的方法就是switch case 语句
·switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
·switch语句中的变量类型可以是:
·byte\short\int\char
·从java SE7开始,switch支持字符串String类型
·同时case标签必须为字符串常量或字面量
·语法:
switch(expression){
case value:
//语句
break;//可选
case value:
//语句
break;//可选
//你可以有任意数量的case语句
default://可选,前面的语句都不符合,相当于if else 中的else
//语句
}
case的穿透
package com.yu.struct;
public class SwitchDemo01 {
public static void main(String[] args) {
//case穿透
char grade = 'C';
switch (grade){
case 'A':
System.out.println("优秀");
break;//可选
case 'B':
System.out.println("良好");
case 'C':
System.out.println("及格");
case 'D':
System.out.println("再接再厉");
case 'E':
System.out.println("未知等级/挂科");
default:
System.out.println("未知等级");
}
}
}
疑问:
由上代码及结果可以看出;输入的值为C,但是结果却为C以后的所有答案,为什么呢?原因就是case的穿透。
解决方法:在每个case语句后都要加上break语句