无论你使用的是
while
循环、do
/while
循环,还是无限循环,了解循环的工作原理对 Java 编程至关重要。
只要某些预定的条件为真,一个 while
循环就会执行一组任务。这被认为是一个控制结构,可以指导程序的流程。它是一种你可以通过定义一个条件来告诉你的代码要做什么的方法,它可以测试它,并根据它发现的情况采取行动。Java 中的两种 while
循环是 while
和 do
/while
。
Java while 循环
while
循环的目的是对数据进行迭代,直到某个条件得到满足。要创建一个 while
循环,你需要提供一个可以测试的条件,然后是你想要运行的代码。Java 有几个内置的测试函数,其中最简单的是数学运算符(,
==
, 等等):
package com.opensource.example;
public class Example {
public static void main(String[] args) {
int count = 0;
while (count < 5) {
System.out.printf("%d ", count);
count++;
}
}
}
在这个简单的例子中,条件是变量 count
小于 5。因为 count
被实例化为 0,然后在 while
循环的代码中增加 1,所以程序总共迭代了 5 次:
$ java ./while.java
0 1 2 3 4
在它进行第六次迭代之前,条件不再是真的,所以循环结束。
while
循环的条件语句是至关重要的。弄错了可能意味着你的循环永远不会执行。例如,假设你把 count == 5
作为条件:
while (count == 5) {
System.out.printf("%d ", count);
count++;
当你运行这段代码时,它的构建和运行都很成功,但什么也没有发生:
$ java ./while.java
$
循环被跳过了,因为 count
被设置为 0,而且在第一次遇到 while 循环的时候,它还是 0。循环从未开始,count
也从未被递增。
与此相反的是,当一个条件开始为真,并且永远不会为假时,这将导致一个无限循环。
Java do while 循环
与 while
循环相似,do
/while
循环在每次迭代结束时测试条件,而不是在开始时测试条件。有了这个循环,循环中的代码至少运行一次,因为没有进入的入口,只有退出的出口:
package com.opensource.example;
public class Example {
public static void main(String[] args) {
int count = 9;
do {
System.out.printf("%d ", count);
count++;
} while(count == 5);
}
}
在这个示例代码中,count
被设置为 9。循环重复的条件是 count
等于 5,但是 9 不等于 5。不过,这个检查要到第一次迭代结束时才进行:
$ java ./do.java
9
Java 无限循环
无限循环,正如它的名字所示,永远不会结束。有时它们是被错误地创建的,但无限循环确实有一个有效的场景。有时你想让一个进程无限地继续下去(在功能上是无限的,因为你不能保证你需要它什么时候停止),因此你可能会把你的条件设置为不可能满足的东西。
假设你写了一个应用程序,在僵尸天启期间计算留在你附近的僵尸的数量。为了模拟需要多少个循环才能达到 0 个僵尸的不确定性,我的演示代码从操作系统中检索了一个时间戳,并将计数器(c
)的值设置为从该时间戳得出的某个数字。因为这是一个简单的例子,你不会真的想陷入一个无限循环,这段代码倒数到 0,并使用 break
函数来强制结束循环:
package com.opensource.example;
public class Example {
public static void main(String[] args) {
long myTime = System.currentTimeMillis();
int c;
if ( myTime%2 == 0 ) {
c = 128;
} else {
c = 1024;
}
while(true) {
System.out.printf("%d Zombies\n", c);
// break for convenience
if ( c