目录
程序流程控制语句
分支结构
if分支
- 根据判定的结果(真或假)决定执行某个分支的代码
if分支的结构
if的第一种格式
执行流程
- 首先判断条件表达式的结果,如果为true执行语句体,为 false 就不执行语句体
注意:
- lif 语句中,如果大括号控制的只有一行代码,则大括号可以省略不写。
if的第二种格式
执行流程
- 首先判断条件表达式的结果,如果为true执行语句体1,为 false 就执行语句体2。
if的第三种格式
代码演示
package com.bean.branch;
/**
* @author North
* @date 2022/9/15 13:19
* 目标 : 学会使用 if分支结构解决问题,理解其流程
*/
public class IfDemo01 {
public static void main(String[] args) {
// 需求:心跳(60-100) 之间是正常的,否则系统提示进一步检查
// if语句
int heartBeat = 30;
if (heartBeat < 60 || heartBeat > 100) {
System.out.println("你的心跳数据是:" + heartBeat + ", 你可能需要进一步去检查");
}
System.out.println("检查结束");
System.out.println("--------------------------------");
// if——else语句
// 需求:发红包
double money = 599;
if (money >= 1314) {
System.out.println("红包发送成功~~~~~~~~~~~");
} else {
System.out.println("你自己都没有这么多就别发了~~~~~~~~~~~");
System.out.println("--------------------------------");
// if——else——if语句
// 绩效系统 : 0 —— 60 C , 60 —— 80 B , 80 —— 90 A , 90 —— 100 A+
int score = 90;
if (score >= 0 && score <= 60 ) {
System.out.println("你本月的绩效为: C");
} else if (score > 60 && score < 80) {
System.out.println("你本月的绩效为: B");
} else if (score >= 80 && score < 90) {
System.out.println("你本月的绩效为: A");
} else if (score >= 90 && score <= 100) {
System.out.println("你本月的绩效为: A+");
} else {
System.out.println("你输入的数据有误,请重新输入");
}
}
}
}
switch分支
if、switch分支各自适合做什么业务场景?
- **if****其实在功能上远远强大于switch。
- if适合做区间匹配。
- switch适合做:值匹配的分支选择、代码优雅。
代码演示
package com.bean.branch;
/**
* @author North
* @date 2022/9/15 15:01
*/
public class SwitchDemo02 {
public static void main(String[] args) {
// 目标: 学会使用switch分支结构,理解流程
// 周一:埋头苦干,解决bug 周五:今晚吃鸡
// 周二: 请求大牛程序员帮忙 周六:与王婆介绍的小芳相亲
// 周三:今晚啤酒、龙虾、小烧烤 周日:郁郁寡欢、准备上班。
// 周四: 主动帮助新来的女程序解决bug
String weekday = "周三";
switch (weekday) {
case "周一" :
System.out.println("埋头苦干,解决bug ");
break;
case "周二" :
System.out.println("请求大牛程序员帮忙");
break;
case "周三" :
System.out.println("今晚啤酒、龙虾、小烧烤 ");
break;
case "周四" :
System.out.println("主动帮助新来的女程序解决bug");
break;
case "周五" :
System.out.println("今晚吃鸡");
break;
case "周六" :
System.out.println("与王婆介绍的小芳相亲");
break;
case "周日" :
System.out.println("郁郁寡欢、准备上班。");
break;
default:
System.out.println("数据有误!");
}
}
}
switch的注意事项
switch分支的注意事项
-
①表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
②case给出的值不允许重复,且只能是字面量,不能是变量。
③不要忘记写break,否则会出现穿透现象。
switch穿透性的应用场景
- 如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性。
什么情况下会出现switch穿透现象?
- case中没有写break。
switch穿透性能解决什么问题?
- 存在多个case分支的功能代码是一样时,可以用穿透性把流程集中到同一处处理,这样可以简化代码。
代码演示
package com.bean.branch;
import java.util.Scanner;
/**
* @author North
* @date 2022/9/15 15:23
*/
public class SwitchDemo04 {
public static void main(String[] args) {
// 需求:用户输入月份可以展示该月份的天数。
// 1、3 、5、 7 、 8、 10、 12月份是 31天
// 2月份是闰年为29天、非闰年为28天。
// 4 、6 、9、 11月份 是30天
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你想查看的月份:");
int month = scanner.nextInt();
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(month + "月份是31天");
break;
case 2:
System.out.println(month + "月份是闰年为29天、非闰年为28天。");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(month + "月份是30天");
break;
default:
System.out.println("你输入的数值不再该范围内 , 请重新输入^^");
}
}
}
for循环
for循环格式
代码演示
package com.bean.loop;
/**
* @author North
* @date 2022/9/16 12:57
*/
public class ForDemo01 {
public static void main(String[] args) {
// 目标 : 学会使用for循环,并了解它的执行流程
// 需求 : 尝试输出3次HelloWorld
for (int i = 0 ; i < 3 ; i++) {
System.out.println("HelloWorld");
}
System.out.println("-----------------------------");
for (int i = 0 ; i <= 5 ; i++) {
System.out.println("HelloWorld");
}
System.out.println("-----------案例一----------------");
// 输出 1 - 5 的和
int sum = 0;
for (int number_a = 1 ; number_a <= 5 ; number_a++) {
sum+= number_a;
}
System.out.println("1- 5 的和为:" + sum);
}
}
案例一
package com.bean.loop;
/**
* @author North
* @date 2022/9/16 13:10
*/
public class ForTest01 {
public static void main(String[] args) {
// 需求 : 求 1 - 10 之间的奇数和,并在控制台输出结果
// 定义一个求和的变量
int sum = 0;
for (int number = 1 ; number <= 10 ; number++) {
if (number % 2 == 1) {
sum+= number;
}
}
System.out.println("1 - 10 之间的奇数和为:" + sum);
System.out.println("---------方式二----------------");
int sum_1 = 0;
for (int number_a = 1 ; number_a <= 10 ; number_a+= 2) {
sum_1+= number_a;
}
System.out.println("1 - 10 之间的奇数和为:" + sum_1);
}
}
案例二
package com.bean.loop;
/**
* @author North
* @date 2022/9/16 13:20
*/
public class ForTest02 {
public static void main(String[] args) {
// 需求:在控制台输出所有的“水仙花数”,水仙花数必须满足如下2个要求:
// 水仙花数是一个三位数
// 水仙花数的个位、十位、百位的数字立方和等于原数
int count = 0;
for (int number = 100 ; number < 1000; number++) {
// 获取个位数
int singleDigit = number % 10;
// 获取十位
int ten = number / 10 % 10;
// 获取百位
int hundreds = number / 100;
if ((singleDigit * singleDigit * singleDigit) + (ten * ten * ten) + (hundreds * hundreds * hundreds) == number) {
System.out.print(number + "\t");
count++;
}
}
System.out.println();
System.out.println("水仙花的个数是:" + count);
}
}
while循环
循环格式和执行流程
什么时候用for循环,什么时候用while循环?
- 功能上是完全一样的,for能解决的while也能解决,反之亦然。
- 使用规范是:知道循环几次:使用for;不知道循环几次建议使用:while。
案例一
package com.bean.loop;
/**
* @author North
* @date 2022/9/16 18:43
*/
public class WhileDemo02 {
public static void main(String[] args) {
// 珠穆朗玛峰的高度 , 纸张折叠的次数
double mountEverest = 8848.86;
double paper = 0.1;
// 定义下折叠的次数
int count = 0;
while (paper < mountEverest) {
paper*= 2;
count++;
}
System.out.println("折叠了:" + count + "次");
System.out.println("纸张的最终高度:" + paper);
}
}
do-while循环
循环流程
do-while循环的特点:
- 一定会先执行一次循环体。
案例一
package com.bean.loop;
/**
* @author North
* @date 2022/9/16 18:55
*/
public class DoWhileDemo {
public static void main(String[] args) {
// 目标:学会使用do-while循环,并理解其执行流程
// 先执行再判断
int number_a = 0;
do {
System.out.println("Hello World");
number_a++;
} while (number_a < 3);
}
}
三种循环的区别
- for循环 和 while循环(先判断后执行)
- do…while (第一次先执行后判断)
- for循环和while循环的执行流程是一模一样的。
- 如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
- for循环中,控制循环的变量只在循环中可以使用。While循环中,控制循环的变量在循环后还可以继续使用。
死循环
- 一直循环的执行下去,如果没有干预不会停止下来。
案例
package com.bean.loop;
import java.util.Scanner;
/**
* @author North
* @date 2022/9/17 15:00
*/
public class DeadForDemo01 {
public static void main(String[] args) {
// 目标:学会定义死循环
// for ( ; ; ) {
// System.out.println("Hello World");
// }
// while (true) {
// System.out.println("Hello World");
// }
System.out.println("-------------------------");
int okPassword = 520;
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入密码:");
int password = scanner.nextInt();
if (password == okPassword) {
System.out.println("密码正确^^");
break;
} else {
System.out.println("请重新输入密码:");
}
}
}
}
循环嵌套
- 循环中又包含循环
嵌套循环的特点
- 外部循环每循环一次,内部循环全部执行完一次。
案例一
package com.bean.loop;
/**
* @author North
* @date 2022/9/17 15:14
*/
public class NestedDemo {
public static void main(String[] args) {
// 理解嵌套循环的执行流程
for (int number_a = 0 ; number_a < 5 ; number_a++) {
for (int number_b = 0 ; number_b < 3 ; number_b++ ) {
System.out.println("冲华水!!!!!!!!");
}
System.out.println("----------------------------------------");
}
System.out.println("_________________________________________________________");
System.out.println("----------------------案例二-------------------------------");
for (int number_c = 0; number_c < 10 ; number_c++ ) {
for (int number_d = 0 ; number_d < 5 ; number_d++) {
System.out.print("*");
}
// 换行
System.out.println();
System.out.println("--------------------------------------------");
}
}
}
跳转关键词
- break , continue
break
- 跳出并结束当前所在循环的执行。
continue
- 用于跳出当前循环的当次执行,进入下一次循环。
注意事项
- break : 只能用于结束所在循环, 或者结束所在switch分支的执行。
- continue : 只能在循环中进行使用
案例
package com.bean.loop;
/**
* @author North
* @date 2022/9/17 15:29
*/
public class BreakDemo {
public static void main(String[] args) {
// 目标 : 学会使用break语句
for (int number = 0 ; number < 5 ; number++) {
if (number == 3) { continue;
}
System.out.println("加油" + number);
}
}
}
Random
作用
- 用于在程序中获取随机数的技术。
使用步骤
- 导包:告诉程序去JDK的哪个包中找随机数技术
- 写一行代码代表得到随机数对象
- 调用随机数的功能获取0-9的随机数
Random生成随机数的特点
- nextInt(n)功能只能生成:0 – (n-1)之间的随机数。
**Random****生成区间随机数的技巧:减加法。
案例
package com.bean.random;
import java.util.Random;
import java.util.Scanner;
/**
* @author North
* @date 2022/9/17 15:52
*/
public class RandomDemo02 {
public static void main(String[] args) {
// 目标 : 理解并编写参数字游戏
// 1 . 随机一个幸运号码 1 —— 100 之间
Random random = new Random();
int luckNumber = random.nextInt(100) + 1;
// 让用户输入数据猜测
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要猜测的数字:");
while (true) {
int number = scanner.nextInt();
// 判断这个猜测的号码与幸运号码的大小情况
if (number > luckNumber) {
System.out.println("你输入的数字过大 , 请重新输入:");
} else if(number < luckNumber){
System.out.println("你输入的数字过小 , 请重新输入:");
} else {
System.out.println("恭喜你 ! 输入正确");
// 输入正确 , 直接跳出死循环
break;
}
}
}
}