Java複習總結04——流程控制
阿新 • • 發佈:2018-12-17
三大流程控制語句:順序,選擇,迴圈。
一.順序控制語句
按照程式碼的先後順序依次執行,程式中多數程式碼都是這樣執行的。一個程式總的執行順序也是這樣的,先順序執行,遇到選擇和迴圈語句後,就按選擇迴圈的規則執行,選擇迴圈語句結束後繼續按順序執行。
二.選擇控制語句
- if結構
if(條件){ 在該條件成立下執行的程式碼,否則不執行,直接跳過 } 例如: if(a>b){//如果a大於b,就輸出a System.out.println(a); }
- if....else
if(條件){ //程式碼1 如果條件成立,就執行此處程式碼1,否者,執行else下的程式碼2 }else{ //程式碼2 } 例如: if(a>b){//如果a大於b,就輸出a,反之輸出b System.out.println(a); }else{ System.out.println(b); }
- 多重if結構
if(條件1){ }else if(條件2){ }else if(條件3){ }else{ } 例如常見的成績判斷 Scanner sc = new Scanner(System.in); int n = sc.nextInt();//從鍵盤輸入成績n,n為整數 if(n>90) { System.out.println("優秀"); }else if(n>80) { System.out.println("良好"); }else if (n>70) { System.out.println("中等"); }else if(n>60){ System.out.println("及格"); }else { System.out.println("不及格"); }
- 巢狀if結構
if(條件1){ if(條件2){ } } 例如 int x=5,y=6; if(x!=y) { if(x>y) { System.out.println("x>y"); }else { System.out.println("x<y"); } }else { System.out.println("x=y"); }
switch語句
switch(表示式){//表示式可以為byte,short,char,int,enum(列舉,jdk5.0引入),String(jdk7.0引入) case 目標值1:程式碼;break;//break的作用是結束switch語句,使之不再向下執行 case 目標值2:程式碼;break;//如果不加break,程式就會一直向下執行,直到遇到break和執行到最後 case 目標值3:程式碼;break;//case後面的n的取值不能重複 case 目標4:程式碼;break; ...... default:程式碼;//n取其他值 } //輸出星期幾的例子,應該是很常見的,大家可以去掉其中幾個break試試輸出會有什麼不同 Scanner sc = new Scanner(System.in); int n = sc.nextInt();//從鍵盤輸入成績n,n為整數 switch (n) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期七"); break; default: System.out.println("輸入錯誤"); }
三.迴圈控制語句
- while
while(迴圈條件){ //程式碼 } 滿足迴圈條件就執行裡面的程式碼 int n = 5; while(n>1){ System.out.println(n); n--; }
- do...while
do{ //程式碼 }while(迴圈條件) //和while迴圈類似,但是迴圈條件放在迴圈體的後面,這意味著迴圈體會無條件執行一次 //所以while迴圈可能一次都不執行,但do..while迴圈至少執行一次 //例如下邊的程式碼,n=1不滿足n>1的迴圈條件,但還是會輸出1並且執行n-- int n=1; do{ System.out.prntln(n); n--; }while(n>1)
- for
for(初始化表示式;迴圈條件;操作表示式){ 迴圈體 } 執行順序: for(a;b;c){ d } a->b->d->c->b->d->c->b->d->c.....直到不滿足迴圈條件b
- 增強型for迴圈(也叫foreach迴圈)
格式
for(資料型別 變數名:遍歷物件){
}
/*資料型別 變數名:宣告一個變數用來接收遍歷目標遍歷後的元素,
一般為遍歷物件的子型別,如遍歷物件為陣列,數組裡面的資料為int型別,則迴圈裡面的資料型別宣告為int。*/
例如:
int[] arr = {1,5,2,7,4,8,9,10};
for(int n:arr) {
System.out.println(n);
}
注:1.增強for迴圈底層也是使用了迭代器獲取的,只不過獲取迭代器由jvm完成,不需要我們獲取迭代器而已,所以在使用增強for迴圈遍歷集合是不能對集合元素進行修改,遍歷陣列也同樣如此
2.普通for迴圈可以沒有遍歷的目標,而增強for迴圈一定要有遍歷的目標。