顺序结构
- Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。
选择结构 (重点)
-
if单选择结构
语法if(布尔表达式){ //如果布尔表达式为true将执行的语句 }
如下图
如果他等于true,那么他将会执行语句,如果等于false,那么他将跳过这段语句
if()里面默认为==true
equals 判断字符串是否相等
equals和==是有区别的
package struct;
import java.util.Scanner;
public class ifDay01 {
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();
}
}
以上代码,只要输入的一个内容为Hello则会再执行一遍hello,再执行end
我们可以先随便输入一个内容 如 A
就发现,代码运行的时候跳过了语句,直接执行下一个语句
我们在重新输入一个Hello
代码按照顺序执行了下来
if双选择结构
-
语法
if(布尔表达式){ //如果布尔表达式的值为true }else{ //如果布尔表达式的值为false }
示例
package struct; import java.util.Scanner; public class ifDay02 { public static void main(String[] args) { //考试分数大于60分及格,小于60分不及格. Scanner scanner = new Scanner(System.in); System.out.println("请输入成绩:"); int score = scanner.nextInt(); //nextInt 最小的值是整数不然可能会报错 //score 成绩 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执行代码 }
-
示列
-
package struct; import java.util.Scanner; public class ifDay03 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); /* * if语句至多有1个else 语句,else语句在所有的else if语句之后 * if语句可以有若干个else if语句,它们必须在else语句之前、 * 一旦其中一个else if语句检测为true,其他的else if 以及 else 语句都将跳过执行 * * */ System.out.println("请输入成绩"); float score = scanner.nextFloat(); if (score==100) { System.out.println("恭喜满分"); }else if (score<100 && score>=90) { System.out.println("A"); }else if (score<900 && score>=80) { System.out.println("B"); }else if (score<80 && score>=70) { System.out.println("C"); }else if (score<70 && score>=60) { System.out.println("D"); }else if (score<60 && score>=0) { System.out.println(""); }else { System.out.println("成绩不合法"); }
-
我这个代码是flaot类型,改成int类型就是只能算整数了,这个可以算小数
if多选择结构注意点
1. if语句至多有1个else 语句,else语句在所有的else if语句之后**
2. if语句可以有若干个else if语句,它们必须在else语句之前、- 一旦其中一个else if语句检测为true,其他的else if 以及 else 语句都将跳过执行**
嵌套的if结构
语法:
if(布尔值表达式 1 ){
//如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}
}
switch多选择结构
语法
switch(expression){
case value :
//语句
break;//可选
case value :
//语句
break;//可选
//你可以有任意数量的case语句
default : // 可选
//语句
}
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
- switch 语句中的变量类型可以是:
- byte、short、int或者char。
- 从Java SE 7 开始
- switch 支持字符串String 类型了
- 同时case标签必须为字符串常量或字面量
示列
package struct;
public class SwitchDay01 {
public static void main(String[] args) {
//
char grade = 'C';
switch (grade) {
//switch()括号里面的表达式可以是一个字符
case 'A'://通过case来判断
System.out.println("优秀");
break;//可选
case 'B':
System.out.println("良好");
case 'C':
System.out.println("及格");
case 'D':
System.out.println("再接再厉");
case 'E':
System.out.println("挂科");
}
}
}
我们运行一下就会发现,跑出了及格 再接再厉和挂科
为什么呢?因为break是结束句
如果没有加的话,代码是一直运行下去,
//case的穿透 而switch 就是匹配一个值
如果不加的break(结束句),代码会继续执行下去,直到default才结束
正确代码
package struct;
public class SwitchDay01 {
public static void main(String[] args) {
//case 穿透 switch 匹配一个值 break 结束句
char grade = 'B';
switch (grade) {
//switch()括号里面的表达式可以是一个字符
case 'A'://通过case来判断
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("未知等级");
}
}
}
switch注意事项
每次写完case之后,在结束出一定要写上break
switch()括号里面的表达式可以是一个字符
从Java SE 7 开始switch 支持字符串String 类型了
package struct;
public class SwitchDay02 {
public static void main(String[] args) {
String name = "我";
//JDK7的新特性,表达式结果可以是字符
//字符的本质还是数字
//反编译 java---class (字节码文件)----反编译(IDEA)
switch (name) {
case "吕鸿":
System.out.println("吕鸿");
break;
case "最右":
System.out.println("最右");
break;
case "最左":
System.out.println("最左");
break;
case "最上":
System.out.println("最上");
break;
default:
System.out.println("回答错误");
}
}
}
跟上面一样,只不过字母换成汉字了
这是JDK7的新特性,不过汉字的本质还是数字