先看一段简单的代码:java
int sum = 0; int n = 5; for (int i = 1; i <= n; i++) { sum += i; } System.out.println(sum);
这段代码的含义是什么?求和:sum = 1 + 2 + 3 + .. + n,当前n为5。spa
这段代码是怎么执行呢?code
从程序的执行步骤中,咱们能够看出for循环执行的步骤为3-7步,组成结构:
for ( 1; 2; 4) {
3
}
其中:
1为声明变量阶段,在for循环中执行一次;
2为逻辑判断,控制for循环是否继续;
3为循环体,须要循环执行的语句;
4为循环以后的操做。在6执行完i++后,须要从新在4判断当前i是否还小于等于n,若是不成立则再也不执行5,反之则继续重复循环。for循环
当理解完毕这段程序后,咱们对场景稍做调整:
求和:sum = 1 + 2 + 3 + .. + n,若是遇到3的倍数,则跳过不计算。class
调整后代码以下:变量
int sum = 0; int n = 5; for (int i = 1; i <= n; i++) { if (i % 3 == 0) continue; sum += i; } System.out.println(sum);
经过对比,发现多了语句【if (i % 3 == 0) continue;】,这句话是什么含义?进阶
若是i取余3为0,则跳过当前循环体(sum += i),继续执行i++。循环
如此以来,执行步骤变动为:语法
【引入知识】
i / 3 表示:i除以3;i % 3 表示i除以3的余数,称做取模。程序
那若是场景变化以下,又该如何处理呢?
求和:sum = 1 + 2 + 3 + .. + n,若是数字大于4,则跳过不计算。
int sum = 0; int n = 5; for (int i = 1; i <= n; i++) { if (i > 4) continue; sum += i; } System.out.println(sum);
当咱们发现i从5开始大于4,接下来的i每次叠加后都会大于4。即当i大于4后,sum+=i;就永远不会被执行到了。
这个时候,咱们就能够使用break,它的意思,正如咱们但愿的:跳出当前for循环,再也不执行for循环体的内容。
int sum = 0; int n = 5; for (int i = 1; i <= n; i++) { if (i > 4) break; sum += i; } System.out.println(sum);
如此以来,执行步骤变动为:
以上,咱们就理解了for循环,以及continue、break语法。
1. 使用嵌套for循环,输出以下图形:
*
**
***
代码以下:
for (int i = 0; i < n; i++) { for (int j = 0; j < i; j++) { System.out.print("*"); } System.out.println(); }
2. 当咱们在使用break语法的时候,其实代码也能够这样写。
PS:因为咱们想解释break的做用,因此并无考虑在实际中的应用。
int sum = 0; int n = 5; for (int i = 1; i <= n && i <= 4; i++) { sum += i; } System.out.println(sum);