1. 程式人生 > 其它 >while迴圈do...while迴圈及for迴圈

while迴圈do...while迴圈及for迴圈

技術標籤:java

迴圈結構

  • while 迴圈

  • do…while 迴圈

  • for 迴圈

    順序結構只能執行一次,迴圈結構可以無限執行

  • 在Java5中引入了一種主要用於陣列的增強型for迴圈。

while 迴圈

  • while是最基本的迴圈,它的結構為:

    while(布林表示式){
        //迴圈內容
    }
    
    • 只要布林表示式為true,迴圈就會一直執行下去

      (只要布林表示式條件為真,就會一直走下去)

示範

package struct;

public class WhileDay01 {
	
	public static void main(String[] args) {
		
	//輸出1~100
int i = 0; while (i<100) { i++; //i++ i+1 先賦值在+1 System.out.println(i); } } }

我們先輸入一個i=0. 然後再用while迴圈 while(布林表示式){

迴圈條件 }進行

while的迴圈條件是布林表示式必須為true。

我們需要輸出的內容是1~100.

可以在布林表示式裡面輸入, “i<100”

意思是i小於100

然後我們在迴圈條件裡面輸入i++

意思i自增當然**++i也可以**

這樣整段程式碼

int i = 0;
		while (i<100) {
			i++;
			//i++    i+1  先賦值在+1
System.out.println(i); }

然後我們輸出一下,

在這裡插入圖片描述

就是1~100了

整片程式碼的意思是

i=0時, while(i<100)  //條件成立,為true, 程式碼執行 {
    i++   //執行程式碼i++     i++:先賦值,在自增 (當然++i也可以)
    }
System.out.println(i);

輸出i  i=0 小於100  程式碼執行 i++   i+1(0+1)= 1 
    再次迴圈 i=1   
    然後i=2
    以此推類

死迴圈

package struct;

public class WhileDay02 {
    public
static void main(String[] args) { //死迴圈 while (true) { //等待客戶端連線 //(true)意思是永遠是對的,一直執行 //定時檢查 //.............. } } }
  • while(true)裡面為true的時候,將視為可執行

    然後就會一直無限迴圈的執行下去

思考一下

計算1+2+3+…+100=?

等於多少該怎麼用程式碼計算

示列

package struct;

public class WhileDat03 {
	public static void main(String[] args) {
	//計算1+2+3+...+100=?
		
		
		int i = 0;
		int sum = 0;
		while (i<=100) {
			sum = sum + i;
			i++;
		}
		System.out.println(sum);
	}

我們先設定一個int型別的i 和sum分別為零

然後再誰知while(i<=100) //因為1+2+3…+100 是有100的所以,需要<=

然後再迴圈內輸入,sum(和)= sum + i ;

再輸入一個i++; 目的是讓i沒迴圈一次,就+1

這樣,我們在執行一下sum 答案等於5050

do…while 迴圈

  • 對於while語句而言,如果不滿足條件,則不能進入迴圈,有時候我們需要不滿足條件,至少執行一次,所以就有了do…while 迴圈,他很while迴圈相似,不同的是do…while迴圈至少會執行一次

語句

do{
    //程式碼語句
}while(布林表示式);

while和do…while的區別:

  • while先判斷後執行,do…while先執行後判斷!

  • Do…while總是保證迴圈體會被至少執行一次!這是他們的主要差別

    示範

    package struct;
    
    public class DoWhileDay02 {
    	public static void main(String[] args) {
    		int a = 0;
    		while(a<0) {
    			System.out.println(a);
    			a++;
    		}
    				System.out.println("===========================");
    		do {
    			System.out.println(a);
    			a++;
    		}while(a<0);		
    	}
    }
    

執行一下,得出結構
在這裡插入圖片描述

為什麼只有分割線下面有0的原因是

while(a<0)執行迴圈一次,但是有a++,此時a=1大於0.無法執行

do…while(a<0)是先執行一次,在判斷

所以分割線下面的do…while(a<0)運算出來了

For 迴圈,程式中用到最多的迴圈★(重點)

語法格式

for(初始化;布林表示式;更新){
    //程式碼語句
}

示列

package struct;

public class ForDay01 {
    public static void main(String[] args) {
    	int a = 1;//初始化條件
    	while(a<=100) {//條件判斷
    		System.out.println(a);//迴圈體
    		a += 2;// a = a+2 的意思   //迭代
    		
    	}
    	System.out.println("while迴圈結束!");
    	//初始化值//條件判斷//迭代
    	for(int i = 1;i<=100;i++) {
    		System.out.println(i);
    	}
    	System.out.println("for迴圈結束!");
    }
	
}

運算一下,最後for迴圈跟while迴圈一下

初始化:int i = 1;

條件判斷:i<=100;

更新:也是 迭(die 第三聲)代 就是i++ 或者 a +=2

for 迴圈語句是支援迭代的一直通用結構,是最有效、最靈活的迴圈結構。

for迴圈注意

 /*
     * 關於for迴圈的幾點說明:
     * 最先執行初始化步驟。可以宣告一種型別,但可初始化一個或多個迴圈控制變數,也可以是空語句。
     * 然後,檢測布林表示式的值。如果為true,迴圈繼續進行,如果為false。迴圈終止,開始執行迴圈後面的語句
     * 執行一次迴圈後,更新迴圈控制變數(迭代因子控制迴圈遍歷的增減)
     * 再次檢測布林表示式。迴圈執行上面的過程. 
     * */
for(;;){
    
}

帶for迴圈沒有任何值的時候,會變成一個死迴圈

因為沒有布林表示式,沒有迭代,會一直執行下去**!!!!!!**

不相信的你們可以試一下

for迴圈練習

練習1:計算0到100之間的奇數與偶數的和

package struct;

public class ForDay02 {
	public static void main(String[] args) {
		//練習1:計算0到100之間的奇數與偶數的和
		int oddSum = 0;    //儲存奇數的和
		int evenSum = 0;    //儲存偶數的和		
		//如果int i = 0   那麼i<100成立, 就走迴圈的路
		for (int i = 0;i<=100;i++) {
			if(i%2!=0) {       //奇數    //% 是模運算                          //!= 是不等於的意思
                
                
			oddSum+=i;	 //oddSum=  oddSum+i
		}else {  //偶數    //else : 反之
			evenSum+=i;   //evenSum=everSum+i
		}			
	}		
		System.out.println("奇數的和:"+oddSum);
		System.out.println("偶數的和:"+evenSum);
	}
}

if(i%2!=0)
    //%是模運算,用來求餘數的
    1/2=0.5   餘數是5 不等於0 所以是奇數
    2/2=1.0 餘數是0  等於零  所以是偶數

練習2:用while或for迴圈輸出1-1000之間能被5整除的數,並且每行輸出3個

示列

package struct;

public class ForDay03 {
	public static void main(String[] args) {
	  //練習2:用while或for迴圈輸出1-1000之間能被5整除的數,並且每行輸出3個	
		for (int i = 1;i<=1000;i++) {
			if(i%5==0) {
				System.out.print(i+"\t");
				
			}
			if(i%(5*3)==0) {  //每行
				System.out.println();
				//System.out.print("\n");
			}
			
		//println 輸出完會換行
	    //print 輸出完不會換行
						
		}		
	}
}

1000裡面被5整除的數字的方法

這裡if(i%5==0)也是跟上面一樣

只有5的倍數才可以等於0

每行3個之後就換行的方法

但是下面的if(i%(5*3)==0)

程式碼是按照從上往下的順序執行的,所以上面程式碼執行完之後,輸出的只有5的倍數的數字了,

然後if(i%(5*3)==0) 的意思是,數字被15整除之後,餘數為零就執行這行程式碼

System.out.println();是換行的意思

println是 輸出完會換到下一行

print是輸出完,不會換行,繼續輸出下去

System.out.print(i+"\t"); 那個\t的意思是空格

在我釋出的文章裡面的那個 資料拓展 的文章裡面有講到 \t \ n 之類的