1. 程式人生 > 實用技巧 >for迴圈與巢狀(水仙花數與三角形的列印)

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("\n");
}
```