1. 生活中的循环

很多时候,我们的生活需要我们多次执行相同的操作。例如,假设我需要扫描包含许多页面的文档。我们一遍又一遍地重复相同的过程:

  • 将第一页放在扫描仪上
  • 按扫描按钮
  • 将下一页放在扫描仪上

这很难手动完成。如果这个过程可以以某种方式自动化,那就太好了。

或者考虑另一个示例:假设我想将收件箱中的所有未读电子邮件标记为垃圾邮件。曾几何时,我必须一次选择每封电子邮件并将其标记为垃圾邮件。

但是程序员很懒惰,所以他们很久以前就自动化了这个过程:现在您只需选择任何字母列表并单击“标记为垃圾邮件”,然后您的电子邮件客户端就会遍历该列表并将每封电子邮件移至垃圾邮件文件夹。

我们能在这里说什么?当计算机或程序可以一次单击执行数百或数千个单调操作时,这将非常方便。现在您也将学习如何执行此操作。


2.while循环

if-else 语句极大地扩展了我们的编程能力,使得编写在不同情况下执行不同操作的程序成为可能。但是还有一件事会让我们的程序更强大一个数量级——循环

Java 有 4 种循环:whileforfor-eachdo-while我们现在将深入研究其中的第一个。

循环while非常简单。它仅由两部分组成:条件循环体。只要条件是,循环体就会一遍又一遍地执行true。一般来说,while循环看起来像这样:

while (condition)
   statement;
while带有单个语句的循环的表示法
while (condition)
{
   block of statements
}
while带有语句块的循环的表示法

这很简单。只要循环条件等于,语句或语句块就会一遍又一遍地执行。true

它是这样工作的:首先,检查条件。如果为真,则执行循环体(语句语句块)。然后再次检查条件并再次执行循环体。依此类推,直到条件变为假。

如果条件始终为 ,那么程序将永远不会停止运行。它将永久卡在循环中。

如果第一次检查时条件为 ,那么循环体甚至不会执行一次。


3.循环的例子

这里有一些循环的实际例子。

代码 解释
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
屏幕上将显示 5 行:
5
4
3
2
1
代码 解释
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
屏幕上会显示10行:
0
1
...
8
9
代码 解释
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
只要输入数字,程序就会从键盘读取数字。
代码 解释
while (true)
   System.out.println("C");
该程序将无休止地C在屏幕上打印这封信。
代码 解释
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
该程序将从键盘读取行

直到exit被输入。

在前面的示例中,该equals()方法用于比较字符串。如果字符串相等,函数将返回true。如果字符串不相等,则返回false.



4.循环内循环

在了解条件语句时,您看到了可以使用它们通过组合多个条件语句来实现复杂的逻辑。换句话说,通过在语句if中使用语句if

你可以用循环做同样的事情。要在循环中编写循环,您需要在第一个循环的主体内编写第二个循环。它看起来像这样:

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
while在另一个循环内循环(带有语句块while

让我们来看看三个任务。

任务 1。假设我们要编写一个程序,Mom在屏幕上显示该单词 4 次。循环正是我们所需要的。我们的代码看起来像这样:

代码 解释
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
屏幕上会显示 4 行:
Mom
Mom
Mom
Mom

任务 2。我们要编写一个程序,A在一行中显示 5 个字母。为此,我们需要再次循环。这就是代码的样子:

代码 解释
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
而不是println(),我们将使用print()。否则,每个字母A 将在单独的一行结束。

屏幕输出将是:
AAAAA

任务 3。我们要显示一个由字母As 组成的矩形。该矩形应由 4 行 x 5 列组成。为此,我们现在需要一个嵌套循环。我们将简单地采用我们的第一个示例(我们输出 4 行的那个)并将用于输出一行的代码替换为第二个示例中的代码。

代码 解释
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
外圈是紫色的它使用n变量来计算循环的迭代次数。

内环是绿色的它使用m变量来计算循环迭代次数。在内循环完成后,

我们必须明确地将光标移动到下一行。否则,程序打印的所有字母将在一行中结束。

屏幕输出将是:
AAAAA
AAAAA
AAAAA
AAAAA

外循环和内循环必须使用不同的变量来统计循环迭代次数。我们还必须System.out.println()在内循环之后添加命令,因为该循环A在同一行显示字母 s。一旦显示一行上的字母,就必须将光标移动到新的一行。



5. 比较循环 Java 和 Pascal

你们中的许多人在高中时学习过 Pascal。为了让您更容易理解此处的材料,请看一下while用 Pascal 和 Java 编写的循环的比较。如果您不了解 Pascal,请跳过这部分。

帕斯卡 爪哇
i := 3;
While i >= 0 Do
   Begin
      WriteLn(i);
      i := i - 1;
   End;
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
i := 0;
While i < 3 Do
   Begin
      WriteLn(i);
      i := i + 1;
   End;
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
IsExit := False;
While Not isExit Do
   Begin
      ReadLn(s);
      isExit :=  (s = 'exit');
   End;
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
While True Do
   WriteLn('C');
while (true)
   System.out.println("C");
While True Do
   Begin
     ReadLn(s);
     If s = 'exit' Then
       Break;
   End;
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}