文章目录
程序流程控制
01.分支结构
if
package com.itheima.branch;
import java.util.Scanner;
public class IfDemo1 {
public static void main(String[] args) {
// 目标:掌握分支结构的写法,理解其应用场景。
// 需求1:判断体温高于37度就报警,否则什么也不做。
Scanner sc = new Scanner(System.in);
System.out.println("录入这个人的体温:");
double t = sc.nextDouble();
if(t > 37){
System.out.println("您的体温异常,请隔离检查!");
}
System.out.println("审核结束!");
// 注意: 如果if分支的代码只有一行,那么{}可以省略不写。
// 但是一旦去掉{}只能控制紧随的第一行代码。(大家注意:还是建议大家加上{},可读性好,不容易理解出错!)
System.out.println("-------------------------------------------------------");
// 需求2:你的钱包有钱10块钱,发出红包,如果足够就提示发成功,如果不够提示余额不足。
double money = 10;
if(money >= 15) {
System.out.println("发出红包成功!");
}else {
System.out.println("余额不足~!");
}
System.out.println("-------------------------------------------------------");
// 需求3:绩效系统:按照你每个月的打分输出对应的等级。
// 0 - 60 ===> D
// 60 - 80 ===> C
// 80 - 90 ===> B
// 90 - 100 ===> A
System.out.println("请输入该员工的绩效分数:");
double score = sc.nextDouble();
if(score >= 0 && score < 60) {
System.out.println("您本月的绩效级别是:D");
}else if(score >= 60 && score < 80){
System.out.println("您本月的绩效级别是:C");
}else if(score >= 80 && score < 90){
System.out.println("您本月的绩效级别是:B");
}else if(score >= 90 && score <= 100){
System.out.println("您本月的绩效级别是:A");
}else {
System.out.println("您输入的成绩是瞎搞的,请检查!");
}
}
}
运行结果如下:
录入这个人的体温:
36.8
审核结束!
-------------------------------------------------------
余额不足~!
-------------------------------------------------------
请输入该员工的绩效分数:
91
您本月的绩效级别是:A
switch
package com.itheima.branch;
public class SwitchDemo2 {
public static void main(String[] args) {
// 目标:掌握switch分支的写法,理解其流程,还有与if分支的比较。
// 3、正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
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("星期数据有问题!");
}
}
}
运行结果如下:
主动帮助新来的女程序员解决bug!
switch使用时的注意事项
package com.itheima.branch;
public class SwitchDemo3 {
public static void main(String[] args) {
// 目标:理解switch的注意事项。
// 1、表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
char a = 'c';
String weekDay = "周一";
long lg = 13;
double score = 0.1 + 0.2;
System.out.println(score);
// switch (score){
// }
// 2、case给出的值不允许重复,且只能是字面量,不能是变量。
int b = 10;
int c = 12;
switch (b) {
case 10:
break;
case 11:
break;
case 12:
break;
}
// 3、正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
}
}
运行结果如下:
0.3
package com.itheima.branch;
public class SwitchDemo4 {
public static void main(String[] args) {
// 目标:掌握switch穿透性的作用:可以把case中的相同代码穿透一个case写,从而简化代码!
String weekDay = "周三";
switch (weekDay) {
case "周一":
System.out.println("埋头苦干,解决bug!");
break; // 跳出分支
case "周二":
case "周三":
case "周四":
System.out.println("请求大牛程序员帮忙!");
break; // 跳出分支
case "周五":
System.out.println("自己整理代码!");
break; // 跳出分支
case "周六":
case "周日":
System.out.println("打游戏!");
break; // 跳出分支
default:
System.out.println("星期数据有问题!");
}
}
}
运行结果如下:
请求大牛程序员帮忙!
02.循环结构
for循环
package com.itheima.loop;
public class ForDemo1 {
public static void main(String[] args) {
// 目标:掌握for循环的书写,并理解其执行流程。
// 需求:控制打印3行HelloWorld
/**
* 执行流程:
* 计算机遇到for关键字就开启循环。
* 先执行初始化语句int i =0,然后判断 循环条件 0 < 3 成立,执行循环体语句输出第一行HelloWorld
* 接着执行迭代语句i++,i =1,然后判断 循环条件 1 < 3 成立,执行循环体语句输出第二行HelloWorld
* 接着执行迭代语句i++,i =2,然后判断 循环条件 2 < 3 成立,执行循环体语句输出第三行HelloWorld
* 接着执行迭代语句i++,i =3,然后判断 循环条件 3 < 3 不成立,循环立即结束。
*/
for (int i = 0; i < 3; i++) {
System.out.println("Hello World");
}
System.out.println("-------------------------------------");
for (int i = 0; i < 5; i++) {
// i = 0 1 2 3 4
System.out.println("HelloWorld");
}
System.out.println("-------------------------------------");
for (int i = 0; i <= 3; i++) {
// i = 0 1 2 3
System.out.println("HelloWorld");
}
System.out.println("-------------------------------------");
for (int i = 1; i <= 3; i++) {
// i = 1 2 3
System.out.println("HelloWorld");
}
System.out.println("-------------------------------------");
for (int i = 4; i <= 10; i++) {
// i = 4 5 6 7 8 9 10
System.out.println("HelloWorld");
}
System.out.println("-------------------------------------");
for (int i = 1; i <= 10; i+=2 ) {
// i = 1 3 5 7 9
System.out.println("HelloWorld");
}
System.out.println("-------------------------------------");
// 批量产生 1 - 100的每个数据
for (int i = 1; i <= 100; i++) {
// i = 1 2 3 4 5 6 ... 99 100
System.out.println(i);
}
}
}
package com.itheima.loop;
public class ForTest2 {
public static void main(String[] args) {
// 目标:完成for循环求和。 1-5的和。
// 2、定义一个变量用于累加求和。
int sum = 0;
// 1、使用循环产生 1 2 3 4 5的数据。
for (int i = 1; i <= 5; i++) {
// i = 1 2 3 4 5
// 3、累加数据求和
/**
* sum = 0 + 1 = 1
* sum = 1 + 2 = 3
* sum = 3 + 3 = 6
* sum = 6 + 4 = 10
* sum = 10 + 5 = 15
*/
sum += i; // sum = sum + i;
}
// 4、输出求和变量sum即可。
System.out.println("1-5的和是:" + sum);
}
}
运行结果如下:
1-5的和是:15
package com.itheima.loop;
public class ForTest3 {
public static void main(String[] args) {
// 目标:求奇数和
// 2、定义一个求和变量
int sum = 0;
// 1、定义for循环产生 1 - 10的每个数据
for (int i = 1; i <= 10; i++) {
// i = 1 2 3 4 5 6 7 8 9 10
// 3、筛选出奇数累加
if (i % 2 == 1) {
// i = 1 3 5 7 9
// 4、累加数据
sum += i;
}
}
// 5、直接输出数据。
System.out.println("1-10的奇数和是:" + sum);
}
}
运行结果如下:
1-10的奇数和是:25
package com.itheima.loop;
public class ForTest4 {
public static void main(String[] args) {
// 目标:求奇数和的方式二
// 2、准备一个整数变量用于求和
int sum = 0;
// 1、产生1 3 5 7 9 的奇数
for (int i = 1; i <= 10; i+=2) {
// i = 1 3 5 7 9
// 3、直接累加
sum += i;
}
// 4、直接输出求和变量
System.out.println("1-10的奇数和是:" + sum);
}
}
运行结果如下:
1-10的奇数和是:25
package com.itheima.loop;
public class ForTest5 {
public static void main(String[] args) {
// 目标:求水仙花数,输出。
// 1、找到全部的三位数。
System.out.println("水仙花数有:");
int count = 0; // 统计水仙花个数的。
for (int i = 100; i <= 999; i++) {
// i = 100 101 102 ... 153 ... 998 999
// 2、判断这个数是否是水仙花数,是就输出,不是不管!
// i = 153
// 个位:
int ge = i % 10;
// 十位
int shi = i / 10 % 10;
// 百位
int bai = i / 100;
// 3、正式判断这个数是否满足水仙花数的要求
if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) == i) {
System.out.print(i + " "); // 不换行
count++; // 统计一次!
}
}
System.out.println(); // 就是换行
System.out.println("水仙花个数是:" + count);
}
}
运行结果如下:
水仙花数有:
153 370 371 407
水仙花个数是:4
while循环
package com.itheima.loop;
public class WhileDemo6 {
public static void main(String[] args) {
// 目标:掌握while循环的格式写法,并理解流程。搞清楚与for循环的区别。
int i = 0;
while (i < 3){
System.out.println("Hello World!");
i++;
}
}
}
运行结果如下:
Hello World!
Hello World!
Hello World!
package com.itheima.loop;
public class WhileTest7 {
public static void main(String[] args) {
// 目标:完成珠穆朗玛峰案例
// 1、把数据拿到程序中来。
double peakHeight = 8848860;
double paperThickness = 0.1;
// 4、定义一个变量用于计数。
int count = 0;
// 2、使用一个while循环,控制纸张进行折叠。
while ( paperThickness < peakHeight ){
// 3、开始折叠一次。
count++;
// 5、控制纸张的厚度变为原来的两倍。
paperThickness *= 2; // paperThickness = paperThickness * 2;
}
// 6、输出count变量,就是要折叠的次数
System.out.println("纸张最终高度:" + paperThickness);
System.out.println("需要折叠" + count + "次,纸张就会超过山峰高峰!");
}
}
运行结果如下:
纸张最终高度:1.34217728E7
需要折叠27次,纸张就会超过山峰高峰!
do-while循环
package com.itheima.loop;
public class DoWhileDemo8 {
public static void main(String[] args) {
// 目标:先搞清楚do-while循环的写法、流程、执行特点、应用场景。和前面循环的区别
int i = 0;
do {
System.out.println("Hello World!");
i++;
} while (i < 3);
// 特点:先执行后判断,不管三七二十一,一定会执行一次。
do {
System.out.println("Hello World2!");
}while (false);
System.out.println("--------------------------------------");
for (int j = 0; j < 3; j++) {
System.out.println("Hello World! ==> " + j);
}
// System.out.println(j); // 报错
for (int j = 0; j < 3; j++) {
System.out.println("Hello World! ==> " + j);
}
int m = 0;
while (m < 3){
System.out.println("Hello World");
m++;
}
System.out.println(m); // 3
}
}
运行结果如下:
Hello World!
Hello World!
Hello World!
Hello World2!
--------------------------------------
Hello World! ==> 0
Hello World! ==> 1
Hello World! ==> 2
Hello World! ==> 0
Hello World! ==> 1
Hello World! ==> 2
Hello World
Hello World
Hello World
3
死循环
package com.itheima.loop;
public class DeadForDemo9 {
public static void main(String[] args) {
// 目标:掌握死循环的写法。
// 1、for实现
// for ( ; ; ) {
// System.out.println("Hello World!");
// }
// 2、while实现死循环(经典写法)
// while (true) {
// System.out.println("Hello World!");
// }
//
// 3、do-while实现死循环
do {
System.out.println("Hello World!");
}while (true);
}
}
嵌套循环
package com.itheima.loop;
public class ForForDemo10 {
public static void main(String[] args) {
// 目标:理解循环嵌套的执行流程。
// 场景:假如你有女朋友,你犯错了,你女朋友罚你说三天,每天五句我爱你。
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 5; j++) {
System.out.println("我爱你");
}
System.out.println("---------------------------------------------");
}
// 循环嵌套的流程:外部循环每执行一次,内部循环要完整执行完一轮。
// 需求:打印4行5列*
// *****
// *****
// *****
// *****
// 1、定义一个循环控制打几行
for (int i = 1; i <= 4; i++) {
// 2、定义一个循环控制打印多少个星星
for (int j = 1; j <= 5; j++) {
System.out.print("*"); // 不换行
}
System.out.println(); // 换行
}
}
}
运行结果如下:
我爱你
我爱你
我爱你
我爱你
我爱你
---------------------------------------------
我爱你
我爱你
我爱你
我爱你
我爱你
---------------------------------------------
我爱你
我爱你
我爱你
我爱你
我爱你
---------------------------------------------
*****
*****
*****
*****
03.break、continue
package com.itheima.loop;
public class BreakAndContinueDemo11 {
public static void main(String[] args) {
// 目标:搞清楚break和continue的作用。
// 1、break的作用:可以用在switch分支和循环中,用在循环中是立即结束并跳出当前所在循环的执行。
// 场景:假如你又有女朋友了,你犯错了,你女朋友罚你说6句我爱你,说到第三句后心软了,让你别说了!
for (int i = 1; i <= 6; i++) {
System.out.println("我爱你" + i);
if(i == 3){
break; // 立即结束并跳出当前所在循环的执行。
}
}
// if( 2 > 1){
// break; // 报错
// continue; // 报错
// }
// 2、continue的作用:可以用在循环中,用于跳出当前循环的当次执行,直接进入循环的下一次执行。
// 场景:假如你还有女朋友,你犯错了,你女朋友让你做家务6天,每天都是洗碗拖地,第三天表现很好不用做了,但是还不解恨
// 第四天还是要继续做的。。。
for (int i = 1; i <= 6; i++) {
if(i == 3){
// 表现很好,当次不用做,直接去做下一次
continue; // 用于跳出当前循环的当次执行,直接进入循环的下一次执行。
}
System.out.println("洗碗" + i);
System.out.println("拖地" + i);
}
System.out.println("结束。。。。");
}
}
运行结果如下:
我爱你1
我爱你2
我爱你3
洗碗1
拖地1
洗碗2
拖地2
洗碗4
拖地4
洗碗5
拖地5
洗碗6
拖地6
结束。。。。
package com.itheima.loop;
import java.util.Scanner;
public class BreakTest12 {
public static void main(String[] args) {
// 目标:验证密码
// 1、准备正确密码
int sysPassWord = 520;
// 2、让用户不断的去猜测。
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请您输入密码:");
int passWord = sc.nextInt();
// 3、认证密码是否正确。
if(passWord == sysPassWord) {
System.out.println("恭喜您,登录成功!");
break; // 跳出循环!
}else {
System.out.println("对不起,您输入的密码有问题!请重新确认!");
}
}
}
}
运行结果如下:
请您输入密码:
123456789
对不起,您输入的密码有问题!请重新确认!
请您输入密码:
1234567
对不起,您输入的密码有问题!请重新确认!
请您输入密码:
520
恭喜您,登录成功!
04.案例技术:Random随机数
package com.itheima.random;
import java.util.Random;
public class RandomDemo1 {
public static void main(String[] args) {
// 目标:学会使用Random获取随机数。
// 1、导包
// 2、创建一个Random随机数对象。
Random r = new Random();
for (int i = 0; i < 20; i++) {
// CTRL + ALT + T
// 3、调用随机数对象的功能得到一个随机数
int number = r.nextInt(10); // 0 - 9 (包前不包后)
// 4、输出变量即可
System.out.println(number);
}
System.out.println("---------------------------------------");
// for (int i = 0; i < 20; i++) {
// int number = r.nextInt(1, 11); // 1- 10之间的随机数 只能JDK 17开始才能使用
// System.out.println(number);
// }
for (int i = 0; i < 20; i++) {
// 1 - 10 ==> -1 ==> (0 - 9) + 1
int number = r.nextInt(10) + 1;
System.out.println(number);
}
System.out.println("---------------------------------------");
// 需求: 3 - 14 ==> -3 ==> (0 - 11) + 3
for (int i = 0; i < 20; i++) {
int number = r.nextInt(12) + 3;
System.out.println(number);
}
}
}
运行结果如下:
7
6
8
5
3
7
5
2
4
0
5
3
2
3
2
8
2
6
3
4
---------------------------------------
10
9
9
8
4
6
3
10
4
5
10
10
9
7
10
9
10
8
8
10
---------------------------------------
14
9
10
7
11
5
4
10
9
6
10
7
11
12
12
13
3
8
5
3
package com.itheima.random;
import java.util.Random;
import java.util.Scanner;
public class RandomTest2 {
public static void main(String[] args) {
// 目标:完成猜数字游戏案例。
// 1、随机一个1-100的随机数
Random r = new Random();
int luckNumber = r.nextInt(100 ) + 1;
// 2、写一个死循环让用户不断的去猜测。
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请您输入您猜测的数字:");
int guessNumber = sc.nextInt();
// 3、判断是否猜中
if(guessNumber > luckNumber) {
System.out.println("您猜测过大!");
}else if(guessNumber < luckNumber){
System.out.println("您猜测过小!");
}else {
System.out.println("恭喜你,猜中了,可以去买单了!");
break;
}
}
}
}
运行结果如下:
请您输入您猜测的数字:
90
您猜测过大!
请您输入您猜测的数字:
50
您猜测过大!
请您输入您猜测的数字:
40
您猜测过大!
请您输入您猜测的数字:
30
您猜测过大!
请您输入您猜测的数字:
20
您猜测过大!
请您输入您猜测的数字:
10
您猜测过大!
请您输入您猜测的数字:
1
您猜测过小!
请您输入您猜测的数字:
5
您猜测过大!
请您输入您猜测的数字:
4
恭喜你,猜中了,可以去买单了!