第三章 流程控制
1.顺序结构
按照实物本身特性,必须一个接着一个来完成,也就是代码从上往下挨个执行。
2.分支结构
2.1 if条件语句
(1)if语句
(2)if…else语句
(3)if…else if…else语句
// 创建Scanner对象 Scanner scanner = new Scanner(System.in); System.out.print("请输入i:"); int i = scanner.nextInt(); System.out.print("请输入j:"); int j = scanner.nextInt(); if (i > j){ // 执行条件判断① System.out.println("i 比 j 大"); // ①为true时执行 } else if (i < j) { // ①为false继续执行下一个条件判断② System.out.println("i 比 j 小"); // ②为true时执行 } else { System.out.println("i 和 j 相等"); // ②为false时执行 }
2.2 switch…case语句
import java.util.Scanner; public class Demo18SwitchCase { public static void main(String[] args){ // 创建Scanner对象 Scanner scanner = new Scanner(System.in); System.out.print("请输入季节:"); String season = scanner.nextLine(); // 使用season变量的值和后面的case依次进行比较 // 遇到一个满足条件的case,那么后面的都会被执行,包括default分支 // 除非在某个case中使用了break关键字,停止了case的执行。 switch(season){ case "spring": System.out.println("我喜欢春天"); // break ; case "summer": System.out.println("我喜欢夏天"); // break ; case "autumn": System.out.println("我喜欢秋天"); // break ; case "winter": System.out.println("我喜欢冬天"); // break ; // 当前面每一个case都不匹配时执行default分支(默认分支) default: System.out.println("我喜欢梅雨季节"); } } }
①switch(表达式)中表达式的可选值类型
- byte
- short
- int
- char
- 枚举(JDK1.5)
- String(JDK1.7)
②case子句
- case子句中指定的值必须是常量,不能是变量或不确定的表达式的值
- 同一个switch语句中所有case子句中的常量值必须互不相同
③default子句
- default子句是可选的
- default子句的位置是灵活的
3.循环结构
3.1 for循环
语法规则:
- 循环结构中判断条件部分必须是布尔类型,当判断条件部分的表达式计算结果为false时,循环结束。
- 初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
- 可以有多个变量更新,用逗号分隔
// for (声明循环变量;循环过程中的判断条件;循环变量累加) { for ( int i = 1 ; i <= 10 ; i++ ) { // 循环体:希望重复执行的代码 System.out.println("Hello " + i); }
3.2 while循环
问题:世界最高山峰是珠穆朗玛峰,它的高度是8844.43米,假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?
// 将两个数值统一一下单位 double height = 88444300; double paper = 1.0; // 声明一个变量用于统计折纸的次数 int count = 0; // 声明一个变量用于保存纸折叠后的厚度 // 初始值是纸没有折叠时的厚度 double thickness = paper; // 只要纸的厚度还没有超过山的高度就一直循环 while(thickness <= height){ // 每折一次,厚度会翻倍 thickness *= 2; // 每循环一次就代表折叠了一次 count++; } System.out.println("最终纸的厚度=" + thickness); System.out.println("最终折叠的次数=" + count);
3.3 do…while循环
do…while循环和while循环的区别:do…while是先执行后判断,也就是说无论如何都会执行一次,而while循环是先判断后执行。
import java.util.Scanner; // 从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。 public class DoWhileExersice { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); System.out.print("请输入一个整数:"); int userInput = scanner.nextInt(); int positiveCount = 0; int negativeCount = 0; do { if (userInput > 0){ positiveCount++; } if (userInput < 0){ negativeCount++; } System.out.println("正数的个数:"+positiveCount); System.out.println("负数的个数:"+negativeCount); System.out.print("请输入一个整数:"); userInput = scanner.nextInt(); }while(userInput != 0); }
3.4 循环控制语句
①break 基本用法:结束本层循环
System.out.println("循环执行开始了"); for (int i = 1; i <= 10; i++){ if ( i == 5 ){ // 将整个本层的循环结束 break; } System.out.println("i="+i); } System.out.println("循环执行结束了");
即使break放在嵌套循环中,也只能结束本层循环:
System.out.println("外层循环执行开始了"); for (int k = 1; k <= 10; k++){ System.out.println("内层循环执行开始了"); for (int i = 1; i <= 10; i++){ if ( i == 5 ){ // 将整个本层的循环结束 break; } System.out.println("k = " + k + " i = " + i); } System.out.println("内层循环执行结束了"); } System.out.println("外层循环执行结束了");
使用规则
- break只能用在switch或循环结构中
- break语句后面,不能紧挨着写任何其他语句,因为任何其他语句都没法执行到
- 当一个switch语句出现在循环中,switch里面使用break只能对switch有效,对循环无效
②continue 基本用法 :结束本次循环
for (int i = 1; i <= 10; i++){ System.out.println(); System.out.print(i); System.out.print("*"); System.out.print("*"); if (i == 6) { // 提前结束本次循环,继续执行下一次循环 continue; } System.out.print("*"); }
使用规则
- 只能用于循环结构
- continue语句后面,不能紧挨着写任何其他语句,因为任何其他语句都没法执行到
③return:本质上不是控制循环的语句,是用来结束一个函数(方法)的。但是当函数结束时,哪怕还有循环操作没有结束,那也执行不了了。
public static void main(String[] args){ for (int i = 1; i <= 10; i++){ System.out.println("i="+i); if (i == 6){ return ; } } // 由于整个函数结束了,所以这里的代码不会被执行到 System.out.println("循环后面的代码"); }
感谢尚硅谷老师的教导!!!