Java 中的 for 循环
运行一个小循环:把 n 从 1 开始,在 n 小于或等于 3 时继续,每跑完一轮就给 n 加 1。在花括号里打印 n。屏幕应出现三行:1,然后 2,然后 3。本页要教的就是这种反复打印。
for 行里有三部分
创建一个名为 Beat.java 的小程序文件。第一行的 public class 必须与文件名一致:public class Beat。不要在这个文件里留下旧的 Dial 或 Gate 类名;编译器要求类名与文件名一致。
在 main 里,在任何残留的 switch 或 if 之前写上循环:
for (int n = 1; n <= 3; n = n + 1) {
System.out.println(n);
}
单词 for 用小写。圆括号里是用分号隔开的三件事。第一:int n = 1; —— 创建一个整数名 n,从 1 开始。第二:n <= 3 —— 条件为真时继续。第三:n = n + 1 —— 每穿过花括号一次,就把 n 存成多 1。花括号包住循环体。System.out.println(n); 写出 n 的当前值并换行。那一行写出语句里 n 没有引号,所以屏幕上是数字,不是字母 n。编译前先保存文件。
打印 1 再打印 2 再打印 3 的程序
这是你先编译的版本。
public class Beat {
public static void main(String[] args) {
for (int n = 1; n <= 3; n = n + 1) {
System.out.println(n);
}
}
}
在放有 Beat.java 的文件夹里运行 javac Beat.java。当圆括号、花括号和分号都配对时,javac 自己不写任何一行。然后运行 java Beat —— 不是 java Beat.java。第二条命令不要带 .java 后缀。这两条命令在 Windows 和 macOS 上一样;本页不要求两套不同的 shell 写法。程序应打印三行然后停下:第一行 1,第二行 2,第三行 3。它不会等你打字。如果终端在等键盘输入,说明文件里还留着旧练习的 nextLine 调用。删掉那个调用,保留上面的 for 循环。屏幕多出一行错误内容,并不意味着你需要重装 JDK。
按顺序走完一次完整运行。n 从 1 开始。条件 n <= 3 为真,于是循环体运行,println(n) 写出 1。然后步进 n = n + 1 把 2 存进去。条件仍为真,循环体写出 2。步进存入 3。条件仍为真,循环体写出 3。步进存入 4。此时 n <= 3 为假,循环结束。不会再打印别的东西。你不是手写三条独立的 println;同一循环体带着变化的 n 跑了三次。起始只在开头跑一次。条件在每轮之前跑。步进在每轮之后跑。这三件事留在圆括号里;写出的事留在花括号里。
提高上限
只改条件,让循环走得更远:
for (int n = 1; n <= 5; n = n + 1) {
System.out.println(n);
}
起始和步进保持不动。现在屏幕应显示五行:1、2、3、4 和 5。
public class Beat {
public static void main(String[] args) {
for (int n = 1; n <= 5; n = n + 1) {
System.out.println(n);
}
}
}
再次编译并运行:javac Beat.java,然后 java Beat。你应看到五行。你没有重写 println —— 只改了 for 圆括号里的条件。看过五行之后,可以把 n <= 3 改回去,回到第一个演示。两个版本都是合法 Java。它们用不同的停止点教同一种 for 形状。
再读一遍五行的运行。n 从 1 开始。每次条件为真就打印当前的 n,然后加 1。当 n 变成 6 时,条件失败,循环停止。这个演示里数字 6 不会出现在屏幕上,因为循环体只在条件仍为真时才运行。
让循环保持清楚的规则
三部分外面的圆括号是必需的。写成 for int n = 1; n <= 3; n = n + 1 { … } 而没有外层圆括号,javac 会报错。分号在那些圆括号里分隔三部分。本页的循环体始终放在花括号里。Java 也允许单行循环体不加花括号,但 for 下面的第二行若不被花括号包住,就会落在循环外。两个演示都保留花括号,让循环体一目了然。
for 既不是 switch,也不是 if。switch (choice) 在固定的 case 标签里选一次。if (ready) 根据 true 或 false 选两条路径之一。for 在计数器移动时重复同一段花括号里的循环体。不要在同一个 main 里留下 Dial 页的 switch 或 Gate 页的 if,然后奇怪屏幕为什么显示 mid 或 pass 而不是 1、2、3。本课的 main 只应放 for 循环。
常见混淆是打印语法本身:System.out.println("for (int n = 1; n <= 3; n = n + 1)");。那会写出 for 头部的字符。它不会重复。另一种混淆是在循环体里给 n 加引号:System.out.println("n"); 每一轮都写出字母 n,而不是变化的数字。想让计数器出现在屏幕上时,保持 println(n) 不加引号。
步进 n = n + 1 在你别处会看到的后续代码里也可以写成 n++。本页保留 n = n + 1,好让行上每个记号都是你已经会读的词或数字。当某节课需要时,起始可以从 0 而不是 1;这里两个演示都从 1 开始,好让第一行打印与人们口头数的第一个数一致。如果一开始条件就已经为假 —— 例如 n 从 1 开始而条件是 n <= 0 —— 循环体从不运行,屏幕保持空白。那仍是合法的 for;本课演示保留至少为真一次的条件,好让你看到打印行。
你现在能做什么
你可以写出带起始、条件和步进的 for,在花括号里放 println,并看着计数器出现在连续的行上。改条件会改变你得到多少行。下一页是 while:那里条件有自己的位置,步进写在循环体里,而不是写在 for 的圆括号里。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部