# 一、循环语句结构
# 1.1 while 循环语句
# 1.1.1 while 循环语句的格式
格式:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
执行流程:
- 执行初始化语句,该语句只会执行一次
- 执行条件判断语句,例如 i <= 5,看其返回结果是 true 还是 false 如果为 false,则结束循环如果为 true , 则继续循环
- 执行条件控制语句,改变控制循环的变量,例如 i++;
- 随后回到步骤 2 再次执行条件判断语句,以此类推
# 1.1.2 案例代码
案例一: 使用 while 循环,打印 10 次 HelloWorld
package _01while循环;
/*
在工作中尽量的去减少冗余代码,因为可以提高我们的工作效率。
需求:在控制台输出3次的,"您好,传智教育"
解决方案: 使用循环语句去实现。
循环语句的作用: 重复去做一件事情。(循环语句可以反复执行某一段代码)
while循环的格式:
变量定义语句;
while(循环条件判断语句){
符合上述循环条件重复执行的代码;
循环条件的控制语句;
}
*/
public class Demo1 {
public static void main(String[] args) {
//1. 先定义一个变量记录循环的次数
int i = 0;
while(i<3){ //循环的条件 0 1 2
//每次执行完毕循环体都会回到循环的条件判断一次是否要继续循环
System.out.println("您好,传智教育");
i++; //循环条件控制语句,每循环一次i都递增1.
}
}
}
案例 2:使用 while 循环求 1-100 之间的和,并输出结果
package _01while循环;
/*
需求:使用while循环求1-100之间的和,并输出结果
1+2+3+4...+100
思路分析:
1.定义一个变量控制循环的次数,由于本次需要是1~100,所以该变量的值我从1开始。 int i = 1;
2. 循环条件 i<=100 1~100
3. 定义一个变量保存每次累加循环的i的值
*/
public class Demo2 {
public static void main(String[] args) {
// 1.定义一个变量控制循环的次数,由于本次需要是1~100,所以该变量的值我从1开始。 int i = 1;
int i = 1;
// 2. 循环条件 i<=100 1~100
int sum=0;
while(i<=100){ //{}表示的一个作用范围
//3. 定义一个变量保存每次累加循环的i的值
sum=sum+i;
i++;
}
//作用域: 一个变量的作用域在当前定义变量所属的{}里面
System.out.println("总和:"+sum);
}
}
案例 3:一张纸的厚度是 0.0001 米,珠穆朗玛峰的高度是 8848 米,在理论情况下,
一张纸折叠多少次能超过珠穆朗玛峰的高度?
package _01while循环;
/*
需求:一张纸的厚度是0.0001米,珠穆朗玛峰的高度是8848米,在理论情况下,
一张纸折叠多少次能超过珠穆朗玛峰的高度?
*/
public class Demo3 {
public static void main(String[] args) {
//1. 定义变量保存纸张的厚度
double paper = 0.0001;
//2. 定义一个变量保存珠穆朗玛峰的高度
int shan = 8848;
//3. 编写循环的条件,纸张的厚度如果还小于珠穆朗玛峰的高度都需要继续循环对折
//4. 定义一个变量保存每次对折次数
int count = 0;
while(paper<=8848){
//纸张的厚度等于原本的厚度*2
paper=paper*2;
//每对折一次,次数的+1
count++;
}
System.out.println("对折的次数:"+count);
}
}
# 1.2 for 循环语句
# 1.2.1 循环语句的作用
# 1.2.2 for 循环的格式
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
执行流程:
- 执行初始化语句,该语句只会执行一次
- 执行条件判断语句,例如 i <= 5,看其返回结果是 true 还是 false,如果为 false,则结束循环, 如果为 true , 则执行循环体语句
- 执行条件控制语句,改变控制循环的变量,例如 i++;
- 随后回到步骤 2 再次执行条件判断语句,以此类推
# 1.2.3 for 循环示例
案例 1:
package _02for循环语句;
/*
for循环的语句作用:重复执行一段代码;
for循环语句的格式:
for(变量的定义语句;循环条件判断语句;循环条件控制语句){
循环体内容;(需要循环的语句)
}
for循环的执行流程:
需求: 输出10次,奥利给!
*/
public class Demo1 {
public static void main(String[] args) {
//1(声明变量|定义变量) 2(循环条件判断) 4(循环条件控制语句)
for (int i = 0 ; i < 3 ; i++) {
//3(循环体内容)
System.out.println(i+"奥利给...."); //1 2 3
}
}
}
案例二: 使用 for 循环输出 1-5, 输出 5-1
package _02for循环语句;
/*
System.out.println("呵呵"); 自带换行功能
System.out.print("哈哈"); 不带换行功能
-------------------------------------------
需求:使用for循环输出1-5, 输出5-1
*/
public class Demo2 {
public static void main(String[] args) {
//输出1~5
for (int i = 1; i <=5 ; i++) {
System.out.print(i+",");
}
System.out.println(); //换行,什么内容都不输出,仅仅为了换行
//输出5~1 1>0 ,,,,0
for (int i = 5; i >0 ; i--) {
System.out.print(i+","); //5,4,3,2,1,
}
}
}
案例二: 求 1-5 之间的数据和,并把求和结果在控制台输出
package _02for循环语句;
/*
需求: 求1-5之间的数据和,并把求和结果在控制台输出
*/
public class Demo3 {
public static void main(String[] args) {
//1. 变量用于保存每次累加的总和
int sum =0;
//2由于需要计算1~5的总和,所以变量从1开始,到5结束。
for (int i = 1; i <=5; i++) {
//3. 每次循环的i都累加到sum变量中。
sum=sum+i;
}
System.out.println("总和:"+sum);
}
}
案例三: 写一个程序判断并输出 0~10 之间的每个整数是奇数还是偶数
package _02for循环语句;
/*
需求:写一个程序判断并输出0~10之间的每个整数是奇数还是偶数
奇数:数字%2!=0 比如:1%2=0..1
偶数: 数字%2=0 比如:4/2=2..余数0
*/
public class Demo4 {
public static void main(String[] args) {
//1. 编写一个循环是从0~10
for (int i = 0; i <=10 ; i++) {
if(i%2==0){//偶数,能够被2整除
System.out.println(i+"是偶数");
}else{
System.out.println(i+"是奇数");
}
}
}
}
# 1.3 do-while 循环语句(了解)
# 1.3.1 格式
初始化语句;
do {
循环体语句;
条件控制语句;
} while(条件判断语句);
执行流程:
- 执行初始化语句,该语句只会执行一次
- 执行循环体语句
- 执行条件控制语句,改变控制循环的变量,例如 i++;
- 执行条件判断语句,例如 i <= 5,看其返回结果是 true 还是 false 如果为 false,则结束循环
如果为 true , 则回到步骤 2 再次执行循环体语句,以此类推
# 1.3.2 案例
案例 1:使用 do..while 循环输出 1-10 的数字
package _03dowhile循环语句;
/*
do-while格式:
定义变量;
do{
循环体语句;
}while(循环条件语句);
需求:输出1~10的数字。
特殊之处: 先执行,后判断的,不管条件是否成立最起码会执行一次。
*/
public class Demo1 {
public static void main(String[] args) {
int i=100;
do{
System.out.print(i+",");
//循环的控制语句
i++;
}while(i<=10);
}
}
# 1.4 三种循环的对比
- for 循环与 while 循环都是先执行判断语句,后执行循环体语句, do-while 循环语句是先执行循环体,在判断。
- for 循环初始化的变量只能在循环体内部使用,while 循环的变量是定义再循环的外部的,所以循环结束之后还可以继续使用
- 明确具体的循环次数一般我们使用 for 循环,不明确循环次数我们使用 while 循环,do-while 循环很少使用。
# 1.5 死循环
for 循环的死循环格式:
for(;;){
System.out.println("死循环") ;
}
while 循环的死循环:
while(true){
System.out.println("死循环") ;
}
# 二、Debug 调试
# 2.1 debug 的作用
debug 的作用就是让程序停留在指定的位置,然后我们可以观察程序运行过程中数据的变化,从而判断出我们程 序的问题。基础班很少机会使用到 debug 断点调试
# 2.2 debug 的步骤
- 如何加断点?选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可

- 如何运行加了断点的程序?在代码区域右键 Debug 执行

3. 看哪里?看 Debugger 窗口
看 console 窗口
4. 点哪里
点 Step Into (F7)这个箭头,也可以直接按 F7,执行下一步
点 Stop 结束
- 如何删除断点
删除单个断点: 选择要删除的断点,单击鼠标左键即可
删除多个断点: 如果是多个断点,可以每一个再点击一次。也可以一次性全部删除
# 三、跳转控制语句
# 3.1 break 与 continue 关键字的作用
- continue 作用:跳过本次循环继续下一次
- break 作用:
# 3.2 break 与 continue 示例代码
public class Demo9 {
public static void main(String[] args) {
//需求:打印1 2 4 5 7 8 10, 跳过3,6,9
for (int i = 1; i <10 ; i++) {
if(i%3==0){
continue;
}
System.out.println(i);
}
//使用循环打印1~10,遇到3马上结束,结果打印1,2
for (int i = 1; i <10 ; i++) {
if(i==3){
break;
}
System.out.println(i);
}
}
}
# 四、循环嵌套
# 4.1 什么是循环嵌套
循环语句中包含循环语句称为循环嵌套, 一个循环的循环体语句,是另外的一个循环
for (;;) {
for (;;) {
循环体语句;
}
}
# 4.2 示例代码
//需求:每天有24小时,每个小时有60分钟,打印从0时0分到23时59分
public class Test {
public static void main(String[] args) {
for (int i = 0; i <24 ; i++) {
for (int j = 0; j < 60; j++) {
System.out.println(i+"小时,"+j+"分");
}
}
}
}
# 五、Random 随机数
# 5.1 什么是随机数
# 5.2 生成随机数的固定步骤
1).导包:导包的动作必须出现在类定义的上
import java.util.Random;
2).创建对象:这里的写法是固定的,只有 r 可以变化
Random r= new Random();
3).获取随机数:得到随机数
int num = rdm.nextInt(10);//生成:0-9的随机数
int num = rdm.nextInt(10) + 1;//生成1-10的随机数
# 5.3 随机数示例
import java.util.Random;
/**
* 需求:生成一个1-100之间的随机数
*/
public class Test01 {
public static void main(String[] args) {
Random r = new Random();
int result = r.nextInt(100)+ 1;
System.out.println("随机数:"+result);
}
}
# 5.4 小结
# 六、综合案例
# 6.1 统计一周内考勤情况
package _09综合案例;
import java.util.Scanner;
/*
需求:公司每周都要对出勤情况进行统计
具体如下:
1.定义一个变量统计上班的次数
2.使用for循环1-7的数字
3.在for循环中使用Scanner获取1或者0
1表示有上班,0表示休假或旷工
4.使用if语句判断输入的是1还是0
5.如果输入的是1则把统计变量++
6.最终打印一周出勤了几天
结果: 本周共出勤xx天!
*/
public class Case1 {
public static void main(String[] args) {
// 1.定义一个变量统计上班的次数
int count=0;
// 2.使用for循环1-7的数字
Scanner sc = new Scanner(System.in);
for (int i = 1; i <=7 ; i++) { //1~7
if(i<7) {
System.out.println("请输入你周" + i + "是否上班:");
}else {
System.out.println("请输入你周日是否上班:");
}
// 3.在for循环中使用Scanner获取1或者0
int num = sc.nextInt();
// 4.使用if语句判断输入的是1还是0
if(num==1){
//上班
// 5.如果输入的是1则把统计变量++
count++;
}
}
// 6.最终打印一周出勤了几天
System.out.println("本周你上班的天数:"+count+"天");
}
}
# 6.2 猜数字小游戏
package _09综合案例;
import java.util.Random;
import java.util.Scanner;
/*
需求:
程序自动生成一个1-10之间的数字,使用程序实现猜出这个数字是多少?
根据不同情况给出相应的提示,能够猜三次
如果猜的数字比真实数字大,提示你猜的数据大了
如果猜的数字比真实数字小,提示你猜的数据小了
如果猜的数字与真实数字相等,提示恭喜你猜中了
*/
public class Case2 {
public static void main(String[] args) {
//1. 随机产生一个数字
Random r = new Random();
int num = r.nextInt(10)+1;
Scanner sc = new Scanner(System.in);
//3. 对比你猜的数字与随机数
for (int i = 0; i <3 ; i++) {
//2. 提示用户录入你猜得数字
System.out.println("请输入你本次要猜的数字:");
int guessNum = sc.nextInt();//用户猜的数字
if(guessNum>num){
System.out.println("猜大了,请重新猜");
}else if(guessNum<num){
System.out.println("猜小了,请重新猜");
}else{
System.out.println("恭喜您,猜对了");
//猜对需要结束整个循环
break;
}
}
}
}
# 6.3 随机打印成语
package _09综合案例;
import java.util.Random;
/*
随机产生1~7的一个数字,输出每个数字对应的成语.
如下:
1:一帆风顺
2:二话不说
3:三心二意
4:四面楚歌
5:五湖四海
6:六亲不认
7:七上八下
*/
public class Case3 {
public static void main(String[] args) {
//1.产生一个随机数
Random r = new Random();
int num = r.nextInt(7)+1; //随机数范围就是1~7
//2.判断随机数等于哪个数字
switch (num){
case 1:
System.out.println("一帆风顺");
break;
case 2:
System.out.println("二话不说");
break;
case 3:
System.out.println("三心二意");
break;
case 4:
System.out.println("四面楚歌");
break;
case 5:
System.out.println("五湖四海");
break;
case 6:
System.out.println("六亲不认");
break;
case 7:
System.out.println("七上八下");
break;
}
}
}