如何在 Java 中使用循环

作者选择了 自由和开源基金作为 写给捐款计划的一部分接受捐款。

介绍

编写重复的任务在编程中很常见,一个选项是编写相同或类似的代码,需要多少次,以便一个代码块重复执行,这种方法远非完美,因为它会产生大量重复的代码,难以阅读和维护。

循环是用于控制重复的程序流程的结构. 一个典型的循环有两个部分. 一部分是布尔控制状态. 另一部分是代码块,将执行,而条件是真的或直到条件是假的。

有两种主要类型的循环:循环。它是哪种类型的,取决于循环的语法和逻辑。循环取决于布尔条件。这种条件可能是一般的,虽然它是真的,但代码块被重复执行。循环也重复执行代码块,但循环条件通常取决于整数变量的增加或下降。当这种变量达到一定的目标值时,循环就会破裂。

在本教程中,您将使用循环来创建重复性的任务,并了解每个任务的优点和缺点。

前提条件

要遵循本教程,您将需要:

  • 联合国 一个您可以执行 Java 程序的环境, 与示例一起执行 。 要在您的本地机上设置此功能, 您需要以下操作:

《When》 Loops

例如,条件声明可以验证两个整数变量是否等同,或者两个对象是否相同,相关,而不是,或者其他任何可以编程检查的内容。

在本节中,你将使用while的关键字在Java中创建你的第一个编程循环。你将使用一个单一的(https://andsky.com/tech/tutorials/understanding-data-types-in-java#primitive-types)变量来控制循环。int变量将被称为x并具有3的初始值。虽然或只要x大于0,循环将继续执行一个代码块。在这个代码块中,x的值将被打印,最重要的是,在每次执行时会被后降级(使用--操作员)。

<$>[info] Info: 要跟随本教程中的示例代码,请在本地系统上运行jshell命令来打开JShell工具,然后您可以通过在jshell提示后添加它们来复制、粘贴或编辑示例,然后按ENTER

要测试此代码,请将下列行插入jshell:

1int x = 3;
2while (x > 0) {
3    System.out.println("x is " + x--);
4}

在第一行中,您定义了x变量。

循环从第 2 行开始,关键字是(x > 0) 控制循环,它比较x是否大于0 然后出现开关{,标志着 代码块的开始。

在代码块内,System.out.println(x是 + x--);3行的陈述使用println()方法打印了x的当前值。 (有关System.out.println陈述的更多信息,请参阅我们的教程How To Write Your First Program in Java(LINK0))。

代码区块在最后一行结束时用关闭轴 }. 这也是循环的结尾。

当您在jshell中运行此代码时,下列输出将打印:

1[secondary_label Output]
2x ==> 3
3x is 3
4x is 2
5x is 1

第一行确认x已收到3的值。下列行上,x的值被打印三次,每次减少为1。只有三个迭代,其中x等于3,21。当x达到0时,循环会断开,因为条件陈述x > 0不再满足。

上面的例子是创建循环的一种常见方法。循环的意图是明确的,输出条件是简单的:x > 0 在理论上,你可以通过添加额外的变量和比较(如x > 0y < 0)来使条件更加复杂,但从清洁代码(https://www.oreilly.com/library/view/clean-code-a/9780136083238/)的角度来看,这并不是最好的做法。

當時的「」

Do-while循环比while循环不那么受欢迎,但仍然被广泛使用,Do-while循环类似于while循环,但它们在一个关键方面有所不同:代码块首先执行,然后对循环条件进行评估。

作为提醒,‘而’循环首先评估条件,如果条件未满足,则可能永远不会运行代码块。在‘而’循环中,在循环控制条件被评估之前,总是至少有一次执行代码块。

在本节中,您将创建一个类似于上一节中的while循环的do-while循环,而int变量将被称为x并具有3的初始值。

打开jshell并添加Do-while循环:

1int x = 3;
2do {
3    System.out.println("x is " + x--);
4} while (x < 0);

代码与上一节中的循环有一些相似之处,首先,有变量x的分配,这又是3

在第 2 行中,循环以关键字 do 和代码块的开头轴 { 开始。在第 3 行中,使用 println() 方法打印了 x' 的值。

在最后一行是代码块的关闭栏 },随后是条件声明 (x < 0)关键字。这是与之前的循环不同的一部分. 在这里,条件是逆转的:x应该小于0。

当您在jshell中运行此代码时,下列输出将打印:

1[secondary_label Output]
2x ==> 3
3x is 3

第一行确认x的值为3。第二行打印x3。这是do-while循环的特殊性:即使条件(x < 0)未满足,代码块仍然至少执行一次,这种无条件的执行可能并不总是可取的,这就是为什么你在使用do-while循环时需要小心。

《为了路》

另一种循环结构是for循环,它也被用来在条件下重复运行一个代码块,但它比while循环有更多的选项。在循环控制条件中,你可以添加临时变量,定义控制条件,并改变临时变量的值。这样,你将控制循环的所有因素结合起来,使它不太可能错过某些东西或犯错误。这使你能够保持你的代码干净和易懂。

这里有一个典型的for循环:

1for (int x = 3; x > 0; x--) {
2    System.out.println("x is " + x);
3}

循环始于第一个行上的for关键字. 顺序中的条件陈述有三个部分:

  • int x = 3 定义了变量(x)。在这里定义一个临时变量是方便的,因为它们只需要循环,所以将它们集成到循环中是有意义的。相反,当你使用一个 while 循环时,你必须在循环之前单独声明变量。
  • x > 0 是执行代码块时必须满足的条件。 在这种情况下, x 必须大于 0。 这个部分类似于 while 循环控制声明,它只包含要评估的条件。
  • x 是每一次成功迭代时所采取的操作。 在这种情况下,每一次成功执行后,后退步操作会降低 x 的值。

System.out.println(x是 + x);在2行上使用println()方法打印了x的值,它接收了x的值不变。相反,你用println()方法操纵x的值在而`循环中。

行 3 将代码块和整个循环结构用关闭支架 } 结束。

当您在jshell中运行此代码时,下列输出会打印:

1[secondary_label Output]
2x is 3
3x is 2
4x is 1

输出证实了代码块已被执行三次.第一次,x的值是3;第二次,x是2;第三次,x是1。

从性能和资源使用的角度来看,不应该有任何差异,所以它主要是个人偏好使用哪个循环的问题。

前方路径

一个前进循环与其他循环类似,但它的好处在于它专门设计用于在一组值中重复以尽可能少的代码。只要你有一组值,你可以通过它们而不必跟踪它们的数量或跟踪重复进度。

大多数编程语言都有一个方便的forach环节的捷径,在Java中没有专用的forach关键字,而是使用for关键字,但是forach条件陈述不同于常见的for环节,如下所述。

要使用前方循环,您必须使用一个值组,而一个 array是适用于此目的的。

将以下代码添加到jshell中的forach循环:

1int[] numbers = {0, 1, 2};
2for (int x: numbers) {
3    System.out.println(x);
4}

在第一行上,您创建一个包含三个整数的int数组(0,12).

前方循环从线2开始,以关键字。然后,你定义一个临时变量int x,然后是结肠. 结肠被用作前方操作的捷径。 (前方循环声明是独一无二的,因为这是Java中唯一使用结肠的地方)。

前方循环声明之后,将为数组的每个值执行的代码块。在这种情况下,System.out.println(x);声明将使用println()方法打印x的值,该声明将参考数组的每个值。

当您在jshell中运行上述代码时,以下输出打印:

1[secondary_label Output]
2numbers ==> int[3] { 0, 1, 2 }
30
41
52

第一行确认已定义一个名为数字的数组,其中包含值为0,12

虽然使用其他循环主要是个人选择的问题,但前进循环是重复一组值的实际标准,可以使用同时循环创建自己的前进循环替代方案,但不值得努力,需要对数据结构的深刻理解。

无限的路径

无限循环是循环,当控制条件总是真实时,它们会变得无限。

以下是无限循环的常见例子:

1while (true) {
2    System.out.println("This will print forever.");
3}

第一行看起来像一个典型的循环,但而不是一个条件,如x > 0,只有值true。在这种情况下,当一个控制条件被评估时,true总是直接返回。

当你在jshell中运行上述代码时,下面的输出将打印到你终止代码为止.准备用键盘组合CTRL+C快速终止它,或者只是关闭终端。

1[secondary_label Output]
2This will print forever.
3This will print forever.
4...

仅显示前两次重复,但此输出将继续,直到您按CTRL+C来手动终止。

使用无限循环示例,有明确的意图创建这样的循环,因为单个真实值被放置而不是布尔语陈述。此类循环在过去很受欢迎,并且可能存在于遗传项目中。

不幸的是,有时无限循环不是故意的,你可能会犯错误,造成无限循环。

1int x = 3;
2while (x > 0) {
3    System.out.println("x is " + x);
4}

上面的代码看起来类似于本教程中的第一个示例,在第一行中,你定义了变量x的值3

在第 2 行中,出现了关键字和控制条件,该条件表示循环应该继续,而x > 0是正确的。

System.out.println(x是 + x);在3行中使用println()方法打印了x的值,但是,与本教程的第1节(LINK0)中的while循环示例不同,循环在三次运行后结束,在当前示例中没有xpostdecrement操作,因此,当你在jshell`中运行这个循环时,你会得到以下连续输出:

1[secondary_label Output]
2x is 3
3x is 3
4...

这些行会无限重复,直到你用CTRL+C终止循环. 这种无意无限循环是危险的,因为它们可能会导致程序崩溃或过载运行该程序的机器,这就是为什么你在创建循环时应该小心,并确保有一个可行的终止路径。

结论

在本教程中,你使用循环结构来创建重复性的任务. 你学到了什么时候使用循环是合适的,并用它们写了一些代码示例. 你还学到了清洁代码的最佳实践以及如何避免与循环相关的常见陷阱。

關於Java的更多信息,請參閱我們的 如何在Java中編碼系列。

Published At
Categories with 技术
Tagged with
comments powered by Disqus