11、流程控制 - 顺序结构和选择结构
流程控制
顺序结构
- Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。
- 顺序结构是最简单的算法结构
- 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
选择结构
- if单选择结构
- if双选择结构
- if多选择结构
- 嵌套的if结构
- switch 多选择结构
if单选择结构
-
我们很多时候需要去判断一件事情是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示
-
语法:
if(布尔表达式){ 执行语句 //如果布尔表达式为true将执行此处语句 }例如:
import java.util.Scanner; public class IfDemo01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个整数:"); //hasNextInt()返回值为布尔值,用来判断接收到的数据是否为整型 if (scanner.hasNextInt()){ //nextInt()方法用来接收输入的整型数据 System.out.println("输入的整数为:"+scanner.nextInt()); } System.out.println("END"); scanner.close(); } }这里就不输出结果了。这是一个if单选择结构,当用户输入的数据为int类型时,会打印出用户输入的数据;若不是int类型,则会跳过if的执行语句,输出“END”,程序结束。
if双选择结构
-
if双选择结构也是非常好理解的。它其实就相当于:
如果A为真,那么执行B,否则执行C
-
语法:
if(布尔表达式A){ 执行语句B //如果布尔表达式值为true将执行B }else{ 执行语句C //如果布尔表达式值为false将执行C }例如:
import java.util.Scanner; public class IfDemo02 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个整数:"); if (scanner.hasNextInt()){ System.out.println("输入的整数为:"+scanner.nextInt()); }else { System.out.println("您输入的不是一个整数!"); } System.out.println("END"); scanner.close(); } }当用户输入的数据为int类型时,将打印出输入的数据;当输入的数据不是int类型时,将打印“您输入的不是一个整数!”。
if多选择结构
-
我们日常生活中正常遇到的问题,通常不仅仅只有一两种选择。所以我们需要一个多选择结构来解决问题!
-
语法:
if (布尔表达式 1) { 语句A //1的值为true,执行A }else if (布尔表达式 2) { 语句B //2的值为true,执行B }else if (布尔表达式 3) { 语句C //3的值为true,执行C }else { 语句N //以上布尔表达式(1 - n)值都不为true,执行N }例如:
import java.util.Scanner; public class IfDemo03 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入成绩:"); double score = scanner.nextDouble(); if (score < 60) { System.out.println("差"); }else if (60 <= score && score < 75) { System.out.println("中等"); }else if (75 <= score && score <90) { System.out.println("良好"); }else { System.out.println("优秀"); } scanner.close(); } }显而易见,当输入的成绩处于[0-60)时,输出“差”;当成绩处于[60-75)时,输出“中等”;当成绩处于[75-90)时,输出“良好”;当成绩处于[90-100]时,输出“优秀”。
嵌套的if结构
-
使用嵌套的 if...else 语句时合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。你可以像 if 语句一样嵌套 else if ... else。
-
语法:
if (布尔表达式 1) { 语句A //如果1的值为true,执行A和下面的if语句 if (布尔表达式 2) { //需要1 和 2 的值全都为true 才会之行B 语句B //如果2的值为true,执行B和下面的if语句(如果有的话) } }例如我们把上面的例子改进一下:
import java.util.Scanner; public class IfDemo04 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入成绩:"); double score = scanner.nextDouble(); if (score >= 0 && score <= 100) { if (score < 60) { System.out.println("差"); } else if (60 <= score && score < 75) { System.out.println("中等"); } else if (75 <= score && score < 90) { System.out.println("良好"); } else { System.out.println("优秀"); } }else { System.out.println("您输入的成绩不合法!"); } scanner.close(); } }这就是一个典型的嵌套的 if 结构。当满足了最外层条件:成绩不小于0且成绩不大于100,才会进行下一层判断。
switch 多选择结构
-
多选择结构还有一个实现方式就是 switch case 语句。
-
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
-
swith 语句中的变量类型可以是:
- byte、short、int 或者 char。
- 从 Java SE7 开始,switch 支持字符串 String 类型了。
- 同时 case 标签必须为字符串常量或字面量。
-
语法:
switch (expression) { case value : 语句 break;//可选 case value : 语句 break;//可选 //你可以有任意数量的case语句 default;//可选 语句 }例如:
public class SwitchCaseDemo { public static void main(String[] args) { 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; default: System.out.println("未知等级"); } } }很显然,我们初始化了grade的值为'C',所以只满足case 'C',结果会打印出 '中'。
如果grade的值 不在 'A'、'B'、'C'、'D' 中,则会匹配 default ,打印出“等级未知”。

浙公网安备 33010602011771号