天天看點

java詳解 --- 流程控制之循環結構

java中順序結構的程式語句隻能被執行一次。如果您想要同樣的操作執行多次,,就需要使用循環結構。而在java中循環結構主要有三種:

Java中有三種主要的循環結構:

1.while 循環

2.do…while 循環

3.for 循環

下面來一 一介紹三種循環結構.

一.while循環

while可以說是最簡單的循環結構了.

1.while循環結構

while(1️⃣循環的判斷條件){

2️⃣循環體;

}

2.while循環的規則

循環的規則:

a.當判斷條件成立時,執行循環體

b.當判斷條件不成立時,結束循環

c.當循環條件恒成立時,會出現死循環

可以給死循環 寫一個出口 來結束死循環)

死循環後面會再說

3.whil循環的執行順序

while循環的結構比較簡單,是以執行順序也比較簡單

先判斷1️⃣的真假

如果是真,則會執行2️⃣的語句然後在跳會1️⃣判斷往複循環,知道1️⃣的語 句為假,結束循環;

如果為假,直接結束循環.

圖解:1️⃣–>2️⃣–>1️⃣–>2️⃣–>…..判斷條件不成立,停止循環.

4.while循環舉例

a.列印10遍”睡覺”

運作過程:1.初始化循環增量 –> 2.尋找循環的判斷條件 –> 3.寫循環體

int number = ;
        while (number < ) {
            System.out.println("睡覺");
            number++;
        }
           

注意:循環體中一定記住循環增量要進行改變

b.列印1-100的數(相當于列印循環增量)

int number = ;
        while (number <= ) {
            System.out.print(number + " ");
            number++;
        }
           

c.列印1-10數字的和

這裡提到了一個思想–累加思想,可以用這個思想解決一堆問題

int sum = ;// 定義變量,儲存計算的結果
        int number = ;// 定義循環增量(求和 相當于計算循環增量的和)
        while (number <= ) {
            // 與循環增量相加 儲存結果
            // 用每次儲存的結果與循環增量相加 一直加到10結束
            sum = sum + number;
            number++;
        }
        // 根據需求來選擇列印的位置
        System.out.println(sum);
           

d.求本金和利息(用到累加思想)

銀行定期存款 5年及以上利率7.5% 否則利率 4.5%

本金為10000 計算本金加利息 求10年後的本金加利息

int year = ;
        double money = ;
        while( year <= ) {
            money = money + (money * );
            year++;
        }
        System.out.println(money);
           

二.do while循環

do while循環和while循環的差別就是do while循環無論判斷條件為真還是為假,都會執行一次循環語句.是以有些程式while滿足不了,就會選擇do while程式

1.do while循環的結構

do{

1️⃣循環體(循環的内容);

}while(2️⃣循環條件)

2.do while循環的規則

循環的規則:

先執行一次循環體(無論條件成立與否都會執行一次循環體),再去判斷循環條件:

a. 如果成立,就執行循環體

b.如果不成立,就結束循環

3.do while循環的執行順序

do while循環和while循環的執行順序有點不一樣,do while循環無論判斷條件為真還是為假,都會先執行一遍循環體語句,然後在執行判斷條件,然後在判斷真假,如果為真,就繼續執行循環體,直到判斷條件為假;如果判斷為假,直接結束循環.

圖解:1️⃣–>2️⃣–>1️⃣–>2️⃣–>…..判斷條件不成立,停止循環.

4.do while循環舉例

a.列印10遍”睡覺”

int number = ;
        do {
            System.out.println("睡覺");
            // 每次循環 修改循環增量
            number++;
        } while (number < );
           

b.周一開始列印,并詢問明天上班不,輸入上班繼續列印;反之,停止程式

這裡就有一個新的名詞了–變量的作用域,也可以稱為變量的作用範圍,變量隻在目前的一對大括号中使用,出了這對大括号,就會通路不到.

int weekend = ;
        Scanner scanner = new Scanner(System.in);
        String work = "";
        do {
            System.out.println("明天是周" + weekend );
            System.out.println("你明天上班不? 輸入上班或者不上班");
            work = scanner.nextLine();
            weekend++;
        } while (work.equals("上班") && weekend <= );
           

三.for循環

雖然所有循環結構都可以用 while 或者 do…while表示,但 Java 提供了另一種循環語句–for循環,使一些循環結構變得更加簡單。

1.for循環的結構

for( 1️⃣表達式(循環增量) ; 2️⃣判斷條件 ; 3️⃣表達式( ++ /–) ){

4️⃣循環體;

}

2.for循環的執行順序

先執行1️⃣,然後根據2️⃣和3️⃣的語句進行判斷,如果為真,則執行4️⃣循環體,然後在傳回2️⃣和3️⃣判斷,知道判斷為假結束循環;如果為假,直接結束循環.

圖解:執行順序:1 –> 2 –> 4 –> 3 –> 2 –> 4 –> 3 –>….判斷條件不成立,停止循環.

3.for和while的選取

說了這麼多,可能大家不知道在什麼情況下用for,什麼情況下用while吧現在簡單的說明一下怎麼選取較簡單的循環結構:

如果循環的增量隻是用來控制循環的次數,在循環的外面不需要使用時,可以選取for循環;

反之,循環增量在循環外,你還要繼續使用或操作,這時,你可以選用while循環.

4.for循環舉例

a.求1-10的和

int sum = ;
        for( int i = ;i <= ; i++) {
            sum = sum + i;  
        }
        System.out.println(sum);
           

b.使用for循環 1-100中 是7的倍數 的個數

這裡又提到一個思想–計數器思想,善于想到計數器思想可以為你解決一堆問題哦.

int k = ;
        for (int i = ; i <= ; i++) {
            if( i %  == ) {
                k++;// 記錄符合要求的次數
            }
        }
        System.out.println(k);
           

5.for循環的嵌套

for循環的嵌套顧名思義,就是使用for循環裡面再套個for循環,首先進入外層循環,再進入内層循環.然後層循環直到為假,退出内層循環,然後再進行外層的第二次循環.

下面舉幾個for循環嵌套的例子吧:

a.使用for循環列印下面圖形,

**

**

**

**

首先知道内循環和内循環分别控制什麼:

外層循環控制什麼?–> 控制行數

内層循環控制什麼?–> 控制每行有幾個元素

for (int i = ; i < ; i++) {
            for (int j = ; j < ; j++) {
                System.out.print("*");  
            }
            System.out.println();
        }
        System.out.println("結束");
           

b.列印一個三行六列的矩形

for (int i = ; i < ; i++) {
            for (int j = ; j < ; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
           

c.尖向下的三角形

*****
      ****
      ***
      **
      *
           
for (int i = ; i <  ; i++) {
            for (int j = i; j < ; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
           

d.尖向上的三角形

*
              **
              ***
              ****
              *****
           
for (int i = ; i <  ; i++) {
            for (int j = ; j < i + ; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
           

e.99乘法表

for (int i = ; i <=  ; i++) {
            for (int j = ; j <= i ; j++) {
                System.out.print(j +"*"+ i + "=" + i*j + "\t"); 
            }
            System.out.println();
        }
           

f.列印下面的圖形

—–*

—-* *

—* * *

–* * * *

-* * * * *

for (int i = ; i < ; i++) {
            for (int j = i; j < ; j++) {
                System.out.print("-");
            }
            // 拼接後半部分的圖形
            for (int k = ; k <= i; k++) {
                System.out.print("* ");
            }
            System.out.println();
        }
           

這些圖形程式以後的開發都是用不到的,意在鍛煉你的邏輯思維能力,你的思維邏輯變強了,以後的開發會變得比較輕松的.