Java学习第四天 —— 循环

👁 本文阅读量:拉取中...

Java学习第四天 —— 循环

今天正式进入Java循环的学习,循环是编程中最重要的控制结构之一。通过一天的练习,我系统学习了 for 循环、while 循环、循环嵌套以及 break/continue 控制语句。以下是今天的学习内容和代码笔记。

一、for循环

for 循环是最常用的循环结构,由三部分组成:初始化、条件判断、步进操作

1. 基础for循环

第一个练习是打印10次跳跃:

1
2
3
for(int i = 1; i <= 10; i++){
System.out.println("第" + i + "次跳跃");
}

然后是正序和倒序打印数字:

1
2
3
4
5
6
7
8
// 正序打印 1-5
for (int i = 1; i <= 5; i++){
System.out.println(i);
}
// 倒序打印 5-1
for (int i = 5; i >= 1; i--){
System.out.println(i);
}

2. 累加求和

利用累加器变量,配合 for 循环实现求和:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 求1-5的和
int sum = 0;
for (int i = 1; i <= 5; i++){
sum = sum + i;
}
System.out.println(sum); // 15

// 求1-100的偶数和
int sum = 0;
for (int i = 2; i <= 100; i += 2){
sum = sum + i;
}
System.out.println(sum); // 2550

要点:步长 i += 2 可以实现跳跃式遍历,只取偶数。

3. 循环中的条件判断

统计两个数之间能同时被3和5整除的数字个数:

1
2
3
4
5
6
7
8
9
10
11
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a > b){ int c = b; b = a; a = c; } // 保证 a <= b
int sum = 0;
for (int i = a; i <= b; i++){
if(i % 3 == 0 && i % 5 == 0){
sum++;
}
}
System.out.println(sum);

4. 斐波那契数列

求斐波那契数列第20项:

1
2
3
4
5
6
7
int a = 0, b = 1, c = 0;
for(int i = 1; i <= 20; i++){
if (i == 1) { c = a; }
else if (i == 2) { c = b; }
else { c = a + b; a = b; b = c; }
}
System.out.println(c); // 4181

要点:变量滚动更新 a = b; b = c; 是递推的核心。

5. 交替数列求和

计算 1 - 2 + 3 - 4 + ... + n

1
2
3
4
5
6
7
8
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int sum = 0;
for (int i = 1; i <= n; i++){
if (i % 2 == 1){ sum += i; }
else { sum -= i; }
}
System.out.println(sum);

要点:通过奇偶判断控制加减,sum +=sum -= 简洁高效。


二、while循环

while 循环适合循环次数未知的场景,只要条件为 true 就一直执行。

1. 基础while循环

1
2
3
4
5
int i = 1;
while (i <= 10) {
System.out.println("跳跃了" + i + "次");
i++;
}

注意:while 循环中一定要有让条件趋向 false 的操作,否则会死循环!

2. 复利计算 —— 本金翻倍需要多少年

1
2
3
4
5
6
7
8
double original = 100000;
int year = 0;
double now = original;
while (now < original * 2) {
now = now * 1.017;
year++;
}
System.out.println(year);

3. 纸的折叠问题

一张0.1mm的纸折叠多少次能达到珠峰高度(8848860mm):

1
2
3
4
5
6
7
8
int height = 8848860;
double foldHeight = 0.1;
int times = 1;
while (foldHeight < height) {
foldHeight *= 2;
times++;
}
System.out.println(times); // 27次

要点:指数增长的力量非常强大!

4. 求整数各位数字之和

1
2
3
4
5
6
7
8
9
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
n = n < 0 ? -n : n; // 处理负数
int w = 0;
while (n > 0){
w = w + n % 10; // 取末位数字并累加
n = n / 10; // 去掉末位
}
System.out.println(w);

要点n % 10 取末位、n / 10 去末位,循环直到 n 为 0。


三、循环嵌套

循环嵌套是今天的重头戏,通过外层循环控制行、内层循环控制列,可以打印各种图形。

1. 矩形

1
2
3
4
5
6
for (int i = 1; i <= 4; i++){
for (int j = 1; j <= 5; j++){
System.out.print("x");
}
System.out.println("");
}

输出:

1
2
3
4
xxxxx
xxxxx
xxxxx
xxxxx

2. 三角形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 左对齐正三角
for (int i = 1; i <= 5; i++){
for (int j = 1; j <= i; j++){
System.out.print("x");
}
System.out.println("");
}

// 左对齐倒三角
for (int i = 1; i <= 5; i++){
for(int j = 5; j >= i; j--){
System.out.print("x");
}
System.out.println("");
}

要点:内层循环次数依赖外层变量 j <= i(递增三角)和 j >= i(递减三角)。

3. 居中梯形

1
2
3
4
5
6
7
8
9
for (int i = 1; i <= 3; i++){
for (int j = 1; j <= 3 - i; j++){
System.out.print(" ");
}
for (int j = 1; j <= 2 * i + 1; j++){
System.out.print("x");
}
System.out.println();
}

输出:

1
2
3
  xxx
xxxxx
xxxxxxx

4. 实心菱形

1
2
3
4
5
6
7
8
9
for (int i = 1; i <= 7; i++){
for (int j = 1; j <= (4 - i < 0 ? i - 4 : 4 - i); j++){
System.out.print(" ");
}
for (int j = 1; j <= 7 - 2 * (4 - i < 0 ? i - 4 : 4 - i); j++){
System.out.print("*");
}
System.out.println();
}

输出:

1
2
3
4
5
6
7
   *
***
*****
*******
*****
***
*

要点:利用 |4-i| 的绝对值思想控制空格和星号数量,实现上下对称。

5. 空心菱形

1
2
3
4
5
6
7
8
9
10
11
for (int i = 1; i <= 5; i++){
for (int j = 1; j <= (3 - i > 0 ? 3 - i : i - 3); j++){
System.out.print(" ");
}
System.out.print("x");
if (i == 1 || i == 5) { System.out.println(); continue; }
for (int j = 1; j <= 5 - 2 * ((3 - i > 0 ? 3 - i : i - 3) + 1); j++){
System.out.print(" ");
}
System.out.println("x");
}

要点:顶行和底行只打印一个 x 后直接 continue,中间行在两端打印 x,中间填空格。

6. 九九乘法表

1
2
3
4
5
6
for (int i = 1; i <= 9; i++){
for (int j = 1; j <= i; j++){
System.out.print("" + j + "*" + i + "=" + i * j + "\t");
}
System.out.println();
}

要点\t 制表符用于对齐输出,j <= i 控制三角区域。


四、循环控制 —— break 和 continue

1. break —— 质数判断

1
2
3
4
5
6
7
8
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int n = num - 1;
while (true) {
if (n == 1){ System.out.println("是质数"); break; }
else if (num % n == 0){ System.out.println("不是质数"); break; }
n--;
}

要点while(true) 配合 break 实现不确定次数的循环,一旦找到证据立即退出。

2. continue —— 逢7过

1
2
3
4
5
6
7
for (int i = 1; i <= 100; i++) {
if(i % 10 == 7 || i / 10 == 7 || i % 7 == 0){
System.out.println("过");
continue;
}
System.out.println(i);
}

要点continue 跳过本次循环的剩余代码,直接进入下一次循环。

3. 综合实战 —— 跳过含4的数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Scanner sc = new Scanner(System.in);
int n;
while (true) {
System.out.print("请输入整数n(1-100000):");
n = sc.nextInt();
if (n >= 1 && n <= 100000) { break; }
System.out.println("输出不合法,请重新输入");
}
for (int i = 1; i <= n; i++){
if (i % 4 == 0 || i / 10 % 10 == 4 || i % 10 == 4
|| i / 100 % 10 == 4 || i / 1000 % 10 == 4 || i / 10000 % 10 == 4){
continue;
}
System.out.println(i);
}

4. 猜数字游戏 —— Random + while + break

1
2
3
4
5
6
7
8
9
10
11
12
Random r = new Random();
Scanner sc = new Scanner(System.in);
int num = r.nextInt(100) + 1; // 生成1-100的随机数
while (true) {
System.out.print("请输入你的猜测:");
int guess = sc.nextInt();
if (guess == num){
System.out.println("猜对了");
break;
}
System.out.println("猜错了");
}

要点Random 类生成随机数,r.nextInt(100) + 1 生成 1-100 的随机整数。


五、今日总结

今天的知识点虽然都围绕”循环”展开,但内容非常丰富:

模块 核心内容
for循环 循环三要素、累加求和、斐波那契、交替数列
while循环 循环次数未知的场景、复利、折叠问题、数位拆分
循环嵌套 矩形、三角形、菱形、空心菱形、九九乘法表
break/continue 质数判断、逢7过、猜数字游戏、输入合法性校验

关键收获

  1. for 适合已知循环次数的场景,while 适合循环次数未知的场景
  2. 嵌套循环的核心是:外层控制行,内层控制列
  3. break 直接结束整个循环,continue 只跳过当前这一轮
  4. while(true) + break 是一种非常灵活的循环模式

第四天的代码练习量很大,但通过反复练习,循环的使用已经比较熟练了。明天继续加油!


Java学习第四天 —— 循环
https://mythaicas-king.github.io/2026/07/28/Java学习第四天-循环/
作者
Mythaicas
发布于
2026年7月28日
许可协议