流程控制语句
程序流程控制
选择结构
if
控制语句
if
控制语句共有3种不同形式,分别是单分支结构、双分支结构、多分支结构。
(1)单分支结构
if(表达式) {
语句;
}
- 示例1:从键盘上输入学生考试成绩,如果大于等于60,输出“考试通过”
import java.util.Scanner;
public class Example1_8_2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你的成绩");
int score = input.nextInt();
if(score >= 60) {
System.out.println("考试通过!");
}
}
}
(2)双分支结构
if(表达式) {
语句1;
}else{
语句2;
}
- 示例2:从键盘上输入学生考试成绩,如果大于等于60,输出“考试通过”,否则输出“"同志任需努力”
import java.util.Scanner;
public class Example2_8_2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你的成绩");
int score = input.nextInt();
if(score >= 60) {
System.out.println("考试通过!");
} else {
System.out.println("同志任需努力");
}
}
}
(3)多分支 if 结构
if(表达式) {
语句1;
}else if(表达式2){
语句2;
}else{
语句3;
}
- 示例3:从键盘上输入学生考试成绩,如果大于等于90,小于100,输出“A”,如果大于等于80,输出“B”,如果大于等于70,输出“C”,如果大于等于60,输出“D”,否则输出“"同志任需努力”
import java.util.Scanner;
public class Example3_8_2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你的成绩");
int score = input.nextInt();
if(score >= 90 && score <= 100) {
System.out.println("A");
} else if (score >= 80) {
System.out.println("B");
} else if (score >= 70) {
System.out.println("C");
} else if (score >= 60) {
System.out.println("D");
} else {
System.out.println("同志任需努力!");
}
}
}
- 嵌套 if 控制语句
- 示例4:从键盘上输入一个年份,判断是否为闰年
import java.util.Scanner;
public class Example4_8_2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int year = input.nextInt();
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0) {
System.out.println("闰年");
} else {
System.out.println("不是闰年");
}
} else {
System.out.println("是闰年");
}
} else {
System.out.println("不是闰年");
}
}
}
switch
语句
switch 语句是一种在多个选项中进行选择的控制结构。它根据一个表达式的值来执行与匹配的选项相关联的代码块。下面是使用 switch 语句的基本语法:
switch (expression) {
case value1:
// 执行与 value1 相关联的代码块
break;
case value2:
// 执行与 value2 相关联的代码块
break;
// 可以有更多的 case 语句
default:
// 如果没有任何一个 case 匹配,则执行 default 分支的代码块
}
-
表达式的类型可以是
整型(int | byte | short)
、字符型(char)
、枚举型或字符串类型。 -
case后面的值必须是与表达式类型兼容的常量或字面值。(在Java 7之后,可以使用字符串作为case值)
-
每个case都应该以break语句结束,以避免执行其他case的代码块。
-
如果省略了break语句,将会执行当前case之后的所有case代码块,直到遇到break语句或switch语句结束。
-
示例5:从键盘上输入学生考试成绩,如果大于等于90,小于100,输出“A”,如果大于等于80,输出“B”,如果大于等于70,输出“C”,如果大于等于60,输出“D”,否则输出“"同志任需努力”
import java.util.Scanner;
public class Example5_8_2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你的成绩");
int score = input.nextInt();
switch (score / 10) {
case 10:
case 9:
System.out.println("A");
break;
case 8:
System.out.println("B");
break;
case 7:
System.out.println("C");
break;
case 6:
System.out.println("D");
break;
default:
System.out.println("同志任需努力!");
}
}
}
switch
新特性
a. 箭头表达式
:在 Java 12 中,引入了一种新的语法来简化 switch 语句,使其可以作为表达式使用,而不仅仅是语句。这样可以更方便地将 switch 的结果赋值给一个变量。
b. yield 返回值
:在 Java 14 中,为了支持 switch 表达式,引入了 yield 关键字。它被用于从 switch 表达式中返回一个值。
public enum Season {
SPRING, SUMMER, AUTUMN, WINTER
}
public static String getSeasonName(Season season) {
return switch (season) {
case SPRING -> {
yield "春天";
}
case SUMMER -> {
yield "夏天";
}
case AUTUMN -> {
yield "秋天";
}
case WINTER -> {
yield "冬天";
}
};
}
c. case 匹配多个值
:把逻辑相同的 case 放一起,最后一个 case 写逻辑即可,在 Java12 中,可以使用逗号来分开多个值。
import java.util.Scanner;
public class Example6_8_2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int score = input.nextInt();
String lavel = switch (score / 10) {
case 10,9 -> {
String result = "A,你最棒!";
yield result;
}
case 8 -> "B";
case 7 -> "C";
case 6 -> "D";
default -> "努力";
};
System.out.println(lavel);
}
}