Tutorial

在java中有两种循环语句, forwhile.

For

for循环有三个部分,用分号隔开:

for (int i = 0; i < 3; i++) {}

第一部分在我们进入这段话(循环体)时执行 .

第二部分是一个判断语句, 当返回 true, 我们就执行括号里(循环体)的内容, 如果返回 false, 我们就退出循环. 他第一次运行在第一部分运行结束后, 然后等括号内代码运行后以及第三部运行后,再次运行。

第三部分会在每次循环运行的末尾运行.

示例, 这个循环运行 3 次. 分解操作:

int i = 0;
i < 3 // 0 < 3 = true
      //  运行括号内容
i++ // i 现在是 1
i < 3 // 1 < 3 = true
      // 运行括号内容
i++ // i 现在是 2
i < 3 // 2 < 3 = true
      // 运行括号内容
i++ // i 现在是 3
i < 3 // 3 < 3 = false
      // 判断语句返回false 跳出循环...

我们去掉第一第三部分(虽然很奇怪), 他们还是会执行循环(需事先定义了变量i 如 int i = 0;):

for (;i < 5;) {}

下面我们用 while 做循环操作

While

语法很类似我们先前看到的:

while (条件语句) {}

条件语句会在第一次时执行,然后在括号内容执行完 也就是每个循环结束后 再次执行 。当条件语句返回false时跳出循环.

如果我们想要至少循环一次(也就是至少括号内代码执行一次)

do {

} while(condition);

注意 ; 在do-while后面

Foreach

另一个版本的 for语句是 foreach. 关键字还是for, 但是在变量元素集合数组时,可以简单的写成这样,会循环集合或数组大小的次数

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

相等于:

int[] arr = {1, 9, 9, 5};
for (int i = 0; i < arr.length; i++) {
    int el = arr[i];
    System.out.println(el);
}

请注意,如果您要使用循环内的元素的索引,你必须使用较长的版本,不能使用的foreach。

break 和 continue

这两个关键字帮助我们控制内部循环. break 将导致循环停止,循环结束后会立即进入下一个语句::

int i;
for (i = 0; i < 5; i++) {
    if (i >= 2) {
        break;
    }
    System.out.println("Yuhu");
}
System.out.println(i);
// Output:
// Yuhu
// Yuhu
// 2

continue 将停止当前迭代,并移动到下一个。注意i最后的值为3

int i;
for (i = 0; i < 5; i++) {
    if (i >= 3) {
        break;
    }
    System.out.println("Yuhu");
    if (i >= 1) {
        continue;
    }
    System.out.println("Tata");
}
System.out.println(i);
// Output
// Yuhu
// Tata
// Yuhu
// Yuhu
// 3

Exercise

遍历打印数组中所有的偶数,直到遇到237,就停止打印。

Tutorial Code

public class Main {
    public static void main(String[] args) {
        int[] numbers = {
            951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544, 
        615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941, 
        386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 
        399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, 
        815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717, 
        958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470, 
        743, 527};

        // Your code goes here
    }
}

Expected Output

402 984 360 408 980 544 390 984 592 236 942 386 462 418 344 236 566 978 328 162 758 918

Solution

public class Main {
    public static void main(String[] args) {
        int[] numbers = {
            951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544, 
            615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941, 
            386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 
            399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, 
            815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717, 
            958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470, 
            743, 527};


        for (int i=0; i < numbers.length; i++) {

            int el = numbers[i];
            if (el == 237) break;
            if (el % 2 == 0)           // 使用取余操作符 %
            System.out.print(el+" ");  // 像这样打印!
        }
    }
}