1. 程式人生 > 其它 >第一階段 javaSE java流程控制 02

第一階段 javaSE java流程控制 02

迴圈語句

while迴圈

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

while(布林表示式){

​ //迴圈內容

}

  • 只要別人表示式為true,迴圈就會一直執行下去

  • 我們大多數情況是會讓迴圈停止下來的,我們需要一個讓表示式失效的方式來結束迴圈

     //輸入1-100
    int i = 0;
    while (i<100){
        i++;
        System.out.println(i);
    }
    
  • 少部分情況需要迴圈一直執行,比如伺服器的請求響應監聽等

    //死迴圈
    while (true){
       //等待客戶端連結
        //定時檢查
    }
    
  • 迴圈條件一直為true會造成無限迴圈(死迴圈),我們正常的業務程式設計中應該儘量避免死迴圈,會影響程式效能或者造成程式卡死崩潰

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

int i = 0;
int sum = 0;
while (i<=100){
    sum += i;
    i += 1;
}
System.out.println(sum);

do...while迴圈

  • 對於while語句而言,如果不滿足條件,則不能進入迴圈,但有時候我們需要即使不滿足條件,也至少執行一次
  • do...while迴圈和while迴圈相似,不同的是,do...while迴圈至少會執行一次。

do{

​ //程式碼語句

}while(布林表示式);

int i = 0;
int sum = 0;
do{
    sum += i;
    i++;
}while (i<=100);
System.out.println(sum);

while和do...while的區別:

  • while先判斷後執行,do...while是先執行後判斷
  • do...while總是保證迴圈體會被至少執行一次,這是它們的主要差別
int i = 0;
do{
    System.out.println(i);
}while (i<=0);

System.out.println("-----------------------");

while (i<0){
    System.out.println(i);
}

For迴圈(重要)

雖然所有迴圈結構都可以用while或者do...while表示,但java提供了另一種語句——for迴圈,是一些迴圈結構變得更加簡單

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

for迴圈執行的此數是在執行前就確定的,語法格式如下

for(初始化;布林表示式;更新){

​ //程式碼語句

}

關於for迴圈的幾點說明:

  • 最先執行初始化步驟,可以宣告一種型別,但可初始化一個或多個迴圈控制變數,也可以是空語句
  • 檢測布林表示式的值,如果為true,迴圈體被執行,如果為false,迴圈終止,開始執行迴圈體後面的語句
  • 執行一次迴圈後,更新迴圈控制變數(迭代因子控制迴圈變數的增減)
  • 再次檢測布林表示式,迴圈執行上面的過程
//idea 中可以用快捷鍵 100.for 1000.for等實現for迴圈
for( ; ; ;){ //代表死迴圈
	//程式碼語句
}

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

int oddSum = 0;
int evenSum = 0;
for (int i = 0; i <= 100; i++) {
    if(i%2 != 0){ //奇數
        oddSum+=i;
    }else { //偶數
        evenSum += i;
    }
}
System.out.println("奇數的和:"+oddSum);
System.out.println("偶數的和:"+evenSum);

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

for (int i = 0; i < 1000; i++) {
    if(i%5 == 0){
        System.out.print(i + "\t");
    }
    if(i%15 == 0){
        System.out.println();
        // System.out.print("\n");
    }
}
//println 輸出完會換行
//print 輸出完不會換行

練習3:列印九九乘法表

外迴圈控制列數,內迴圈控制行數,隨著列的增加,行要跟著相應增加,故內迴圈中j<i,是為了去掉重複項

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

增強for迴圈

這裡我們先只是見一面,做個瞭解,之後陣列我們再重點使用

java5引入了一種主要用於陣列或集合的增強型for迴圈

java增強for迴圈語法格式如下:

for(宣告語句:表示式){

​ //程式碼句子

}

宣告語句:宣告新的區域性變數,該變數的型別必須和陣列元素的型別匹配,其作用域限定在迴圈語句塊,其值與此時陣列元素的值相等

表示式:表示式是要訪問的陣列名,或者是返回值為陣列的方法

int[] nums = {10,20,30,40,50}; //定義了一個數組
 for (int num : nums) {
     System.out.println(num);
 }
//在idea的快捷方式,變數名.for,如 nums.for

break continue

break :在任何迴圈語句的主體部分,均可用break控制迴圈的流程。break用於強行退出迴圈,不執行迴圈中剩餘的語句(break語句也在switch語句中使用)

continue:continue 用在迴圈語句體中,用於中只看某次迴圈,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定

break:

int i = 0;
while (i<100){
    i+=1;
    System.out.print(i+"\t");
    if(i==30){
        break;
    }
}

continue:

int i = 0;
while (i<100){
    i+=1;
    System.out.print(i+"\t");
    if(i%10==0){
        System.out.println();
        continue;
    }
}

關於goto關鍵字:

goto關鍵字很早就在程式設計語言中出現,儘管goto仍是java的一個保留字,但並未在語言中得到正式使用;java沒有goto,然而,在break和continue這兩個關鍵字的身上,問哦們仍然能看出一些goto的影子------帶標籤的break和continue

“標籤”是指後面跟一個冒號的識別符號,例如:label:

對java來說唯一用到標籤的地方是在迴圈語句之前,而在迴圈語句之前設定標籤的唯一理由是:我們希望在其中巢狀另一個迴圈,由於break和continue關鍵字通常只中斷當前迴圈,但若同標籤使用,它們會終端到存在標籤的地方

//列印101-150之間所有的質數
 outer:for (int i = 101; i < 150; i++) {
     for (int j = 2; j < i/2; j++) {
         if(i%j==0){
              continue outer;
         }
     }
     System.out.print(i+"\t");
 }

列印三角形 debug

for (int i = 0; i < 5; i++) {
    for (int j = 5; j > i; j--) { //內迴圈1:控制每行空格的個數
        System.out.print(" ");

    }
    for (int j = 0; j < i*2-1; j++) { //內迴圈2:控制每行*的個數
        System.out.print("*");
    }
    System.out.println();
}

學會debug