Tutorial
在java中有两种循环语句, for
和 while
.
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+" "); // 像这样打印!
}
}
}