for循环与嵌套(水仙花数与三角形的打印)

## 一.for循环
语法:
for(开始区间; 结束区间; 修改循环条件){
循环体;
}

> 开始区间:初始化表达式(确定开始)int i = 1; 
> 结束区间:逻辑表达式(确定结束) int i <= 5;
> 修改循环条件:控制循环条件的表达式,改变变量的值 i++

执行流程:

> 1. 初始化表达式,只执行1次
> 2. 逻辑表达式 如果为true,则执行循环体 如果为false,则结束循环
> 3. 当循环体执行完后,执行修改循环条件的语句
> 4. 接下来,回到第2步,直到条件表达式的值为false,则循环结束

例子:水仙花数(所谓水仙花数是指一个数3位数,其
每位数字立方和等于其本身,如153 = 111 + 333 + 555)
分析:开始区间 int i=100;
结束区间 i<=999;
步长 i++

```java
for (int i = 100; i <= 999; i++) {
// 判断 i == g*g*g + s*s*s +b*b*b
int g = i % 10; // 求个位数
int s = i / 10 % 10; // 求十位数
int b = i / 100; // 求百位
if (i == g * g * g + s * s * s + b * b * b) {
System.out.println(i);
}
}
```

## 二.for循环嵌套

语法:

for(开始区间; 结束区间; 修改循环条件) {
for(开始区间; 结束区间; 修改循环条件)
{ 循环体 }
}

执行流程:

```java
//一共循环了2*3=6次
for(int i=1 ; i<=2; i++){ //外层循环,执行2次
for( int j=1; j<=3;j++){ //内层循环,执行3次
System.out.println(i+","+j);
}
}
```


例子:打印等腰直角三角形
分析:

```java
// i是行数; j是*的个数; k(每行第1个*前面的空格个数)
i j k
1 * 1 2
2 *** 3 1
3 ***** 5 0
//一般这种打印图形的题目只要找出i与j和i与k的关系,就可以解出来
// 要j和i找关系 j=2*i -1
// 要k和i找关系 k=3-i

for (int i = 1; i <= 3; i++) { //一共有三行,i<=3
// 先打印空格
for (int k = 1; k <= 3 - i; k++) { //空格k与i的关系3-i
System.out.print(" ");//这里引号里是一个空格
}
// 再打印星星*
for (int j = 1; j <= 2 * i - 1; j++) {//星星j与i的关系为2*i-1
System.out.print("*");
}
// 最后换行,不换行的话,这三行的*会打印在同一行上
//外循环i执行了3次,所以换了三次行
System.out.print("
");
}
```
原文地址:https://www.cnblogs.com/xuqz-niking/p/13277858.html