正在加载...

Java 中的 while 循环

在任何循环之前,把整数 1 放在名字 k 下面。写出 while (k <= 3),并在花括号里打印 k,再把 k + 1 存回 k。屏幕应显示三行:1,然后 2,然后 3。起始在 while 上方。条件在圆括号里。步进在花括号里。本页要教的就是这种分开放置。

起始在外,条件在 while,步进在内

创建一个名为 Pulse.java 的小程序文件。第一行的 public class 必须与文件名一致:public class Pulse。不要在这个文件里留下旧的 Beat 或 Dial 类名;编译器要求类名与文件名一致。
在 main 里先保存计数器:
int k = 1;
这一行不在 while 里面。它只是把 k 从 1 开始。然后是循环:
while (k <= 3) {
System.out.println(k);
k = k + 1;
}
单词 while 用小写。圆括号里只放条件:k <= 3。那些圆括号里既没有起始,也没有步进——与你之前见过的 for 行不同。花括号同时包住写出语句和步进。System.out.println(k); 写出当前数字,k 周围没有引号。然后 k = k + 1; 把多 1 的值存进 k,好让下一次条件最终变成 false。编译前先保存文件。

打印 1 再打印 2 再打印 3 的程序

这是你先编译的版本。

k 从 1 到 3

java
public class Pulse {
    public static void main(String[] args) {
        int k = 1;
        while (k <= 3) {
            System.out.println(k);
            k = k + 1;
        }
    }
}

在放有 Pulse.java 的文件夹里运行 javac Pulse.java。当圆括号、花括号和分号都配对时,javac 自己不写任何一行。然后运行 java Pulse —— 不是 java Pulse.java。第二条命令不要带 .java 后缀。这两条命令在 Windows 和 macOS 上一样;本页不要求两套不同的 shell 写法。程序应打印三行然后停下:1,然后 2,然后 3。它不会等你打字。如果终端在等键盘输入,说明文件里还留着旧练习的 nextLine 调用。删掉那个调用,保留上面的 int 和 while。屏幕多出一行错误内容,并不意味着你需要重装 JDK。

按顺序走完一次完整运行。k 在 while 之前从 1 开始。条件 k <= 3 为真,于是循环体运行:println 写出 1,然后步进存入 2。条件仍为真:写出 2,存入 3。条件仍为真:写出 3,存入 4。此时 k <= 3 为假,循环结束。起始只在循环上方跑一次。条件在每轮之前跑。步进在每次打印后、花括号里面跑。这三件事与 for 是同一套想法,但没有塞进一行头部。如果你省略 k = k + 1; 并让 k 永远停在 1,条件会一直为真,同一行可能不停打印——这就是为什么本页把步进放在循环体里。

放宽条件

只改条件,让循环多走一步:
int k = 1;
while (k <= 4) {
System.out.println(k);
k = k + 1;
}
起始和步进保持不动。现在屏幕应显示四行:1、2、3 和 4。

k 从 1 到 4

java
public class Pulse {
    public static void main(String[] args) {
        int k = 1;
        while (k <= 4) {
            System.out.println(k);
            k = k + 1;
        }
    }
}

再次编译并运行:javac Pulse.java,然后 java Pulse。你应看到四行。你没有重写 println 或步进——只改了 while (…) 里的条件。看过四行之后,可以把 k <= 3 改回去,回到第一个演示。两个版本都是合法 Java。它们用不同的停止点教同一种 while 形状。

再读一遍四行的运行。k 从 1 开始。每次条件为真就打印当前的 k,然后加 1。当 k 变成 5 时,条件失败,循环停止。这个演示里数字 5 不会出现在屏幕上,因为循环体只在条件仍为真时才运行。

📊 k 与第一个演示的屏幕

println 前的 k 屏幕行
1 1
2 2
3 3

把表格当作第一个演示跑完之后的核对,而不是代替运行。在那个演示里,每次 println 之前,k 都保存着那一行会出现的数字。第三次打印之后,步进存入 4,条件失败。如果某个没有步进的版本屏幕永远不停,把 k = k + 1; 重新放回花括号里——不要重装 Java。

让 while 保持清楚的规则

条件外面的圆括号是必需的。写成 while k <= 3 { … } 而没有圆括号,javac 会报错。本页的循环体始终放在花括号里,因为每一轮有两行:println 和步进。如果你把步进放在右花括号之后,它会在循环结束后跑一次——而循环里面 k 从不改变,所以循环可能永远转下去。两个演示都把步进留在花括号里。

while 既不是 for,也不是 switch。for 把起始、条件和步进塞进一行头部。while 在头部只放条件,并要求你自己放置起始和步进。switch 在 case 标签里选一次。不要在同一个 main 里留下 Beat 页的 for 循环或 Dial 页的 switch,然后奇怪屏幕为什么显示 for 风格的残留头部或单词 mid。本课的 main 只应放 int 和 while。

常见混淆是打印语法本身:System.out.println("while (k <= 3)");。那会写出 while 头部的字符。它不会重复。另一种混淆是给 k 加引号:System.out.println("k"); 每一轮都写出字母 k。想让计数器出现在屏幕上时,保持 println(k) 不加引号。如果第一次到达 while 时条件已经为假——例如 k 从 5 开始而条件是 k <= 3——循环体从不运行,屏幕保持空白。那仍是合法的 while;本课演示保留至少为真一次的条件,好让你看到打印行。

你现在能做什么

你可以在 while 上方启动计数器,把条件放进 while (…),并把 println 与步进都留在花括号里。改条件会改变你得到多少行。下一页是 break 和 continue:在那里你可以提前离开循环,或跳过一轮而不结束整个循环。

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
6
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部