初级05 - Java的控制流
2019-07-28 本文已影响0人
晓风残月1994
没太多要说的,和 JavaScript 或其他语言差不多。
- while 与 do...while 循环
while (expression) {
statement(s)
}
do {
statement(s)
} while (expression);
- for 循环
for (int i = 0; // 任何语句,包括空语句
i < 100; // 返回boolean的语句,包括空语句
i++) { // 任何语句,包括空语句
System.out.println(i);
}
- for each 循环
注意要看循环的目标是否实现了 Iterator 接口。
for (String s: Iterable<String>) {
....
}
-
改变循环的流程:break/continue
• break; ⽴即结束包裹当前break的第⼀层循环
• continue; 跳过包裹当前continue的第⼀层循环
中的其余语句,继续下⼀次循环
• break label; 直接跳到 label 处,类似于 C 语言中的 goto。 -
控制流:switch
可以switch哪些东⻄?
• int/long/char/byte/short
• enum 枚举
• String (JDK7+)
• switch的穿透
• switch中的作⽤域
switch(expression){
case value1:
//code to be executed;
break; //optional
case value2:
//code to be executed;
break; //optional
......
default:
// code to be executed if all cases are not matched;
}
控制流:嵌套
上面提到的都能嵌套。
例子:
- 求1到n之间有多少个质数(素数)
public class Main {
public static void main(String[] args) {
System.out.println(howManyPrimeNumbers(5));
}
/**
* 给定一个数字n,返回1到n之间的质数(素数)个数,不包括n本身。
*
* <p>例如,n=5,返回2,因为1到5之间有2个质数:2和3。
*
* <p>提示:对于正整数n,如果用2到Math.sqrt(n)+1之间的所有整数去除,均无法整除,则n为质数。
*
* @param n 给定的数字
* @return 1到n之间(不包括n)质数的个数
*/
public static int howManyPrimeNumbers(int n) {
int count = 0;
label:
for (int i = 2; i < n; i++) { // 已知 1 不是素数,所以从 2 开始
for (int j = 2; j < (Math.sqrt(i) + 1); j++) {
if (i % j == 0 && i != j) { // 提前出现非自己的整除说明不是素数
continue label; // 只是 break 的话,count 还是会 +1,所以要直接跳到外层循环
}
}
count++;
}
return count;
}
}