1. 程式人生 > >3. 流程控制

3. 流程控制

adb 顯示 ora 整除 分享 max-width ace eba height

1. 順序結構

程序從上到下逐行執行
每個語句只被執行一次
中間沒有條件和跳轉

2. 分支結構

分支又稱條件語句,實現流程的控制

Java分支語句:

  1. If語句
  2. Switch語句

技術分享

2.1 If語句

2.1.1 If

if(布爾表達式)
{
   //如果布爾表達式為true將執行的語句
}

如果if語句中的大括號只有一語句,那麽可以省略大括號,不建議這樣做,容易出錯

練習1:

定義一變量 sex 表示人的性別。
如果sex 為 1,輸出小明是男的;
如果sex 為 0,輸出小明是女的;

易錯:

int i = 10;
if (i = 10)
{
    System.out.println(“我是10”);
}

2.1.2 If-else

if(布爾表達式){
   //如果布爾表達式的值為true
}else{
   //如果布爾表達式的值為false
}

練習2:

定義一變量 sex 表示人的性別。
如果sex 為 1,輸出:小明是男的;
如果sex 為 0,輸出:小明是女的;
如果sex 不為0,也不為1,輸出:小明是可能去過泰國的;

2.1.3 If-elseif-else

if(布爾表達式 1){
   //如果布爾表達式 1的值為true執行代碼
}else if(布爾表達式 2){
   //如果布爾表達式 2的值為true執行代碼
}else if(布爾表達式 3){
   //如果布爾表達式 3的值為true執行代碼
}else {
   //如果以上布爾表達式都不為true執行代碼
}

練習3:

定義一浮點數 f ,存放華陽中學3年2班學生小明的期末考試數學成績(100分制:0到100),
如果成績大於等於 90 ,輸出:華陽中學3年2班小明同學,期末考試數學成績為:優,
如果成績大於等於 80 ,輸出:華陽中學3年2班小明同學,期末考試數學成績為:良,
如果成績大於等於 70 ,輸出:華陽中學3年2班小明同學,期末考試數學成績為:中,
如果成績大於等於 60 ,輸出:華陽中學3年2班小明同學,期末考試數學成績為:差,
如果成績小於 60 ,輸出:華陽中學3年2班小明同學,期末考試數學成績為:不及格。

2.1.4 嵌套的If-else

if(布爾表達式 1){
   ////如果布爾表達式 1的值為true執行代碼
   if(布爾表達式 2){
      ////如果布爾表達式 2的值為true執行代碼
   }
}

練習4:

根據輸入的年齡和性別顯示階段的姓名:如果是男性:0-3:男嬰;4-18:正太;19-28:歐巴;29-50:蜀黍;51及以後“爺爺”。如果是女性:0-3:女嬰;4-18:蘿莉;19-28:妹紙;29-50:熟女;51及以後“奶奶”
如果用戶沒有填寫姓名,則提示“請輸入姓名”,否則如果姓名長大於10則提示“姓名長度不能大於10”,
“男”.equals(“男”);
“長度”.length();

2.2 Switch語句

switch(表達式) {
    case 表達式:
          語句;
          break;
    case 表達式:
          語句;
          break;
    default:
          語句;
}

表達式只能是整數類型或者enum枚舉類型、String類型(JDK1.7),包含byte,short,int和char,不能是long

練習5:

近期跑男的節目組找到你,讓你替他們做一個選擇。你有八張卡片,分別為A-鄧超,B-Angelababy,C-李晨,D-陳赫,E-鄭愷,F-王祖藍,G-鹿晗,如果你選擇鄧超,請輸出“We are 伐木累!”,如果是Angelababy,請輸出“boom shakalaka!”,如果是李晨,請輸出“我們打一架吧!”,如果是陳赫,請輸出“你是豬嗎?”,如果是鄭愷,請輸出“噗”,如果是王祖藍,請輸出“完美!”,如果是鹿晗,請輸出“傻麅子!”,如果你選擇的不是上面的,請輸出“你是猴子請來的救兵嗎?”

3. 循環結構

滿足循環條件下,反復執行某一段代碼,這段被重復執行的代碼叫循環體。

包含4個部分:

  1. 初始化語句
  2. 循環條件
  3. 循環體
  4. 叠代語句(循環控制語句)

技術分享

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

  1. while循環
  2. do-while循環
  3. for循環

3.1 while循環

初始化語句
while(循環條件){
     循環體
     叠代語句
}

技術分享

只要循環條件為true,循環體會一直執行下去。一般用於不知道循環的次數時。

練習6:

輸出1-100整數

3.2 do-while循環

初始化語句
do{
     循環體
     叠代語句
} while(循環條件);

技術分享

do-while循環和while循環相似,不同的是,do-while循環至少會執行一次。 do-while循環的循環條件後面必須有一個分號,這個分號表明循環結束

練習7:

用do-while實現練習6

3.3 for循環

for(初始化語句;循環條件;叠代語句){
     循環體
}

技術分享

練習8:

打印100以內不能被7整除的數,並求其和

3.4 循環嵌套

把一個循環放在另一個循環內

for(int i = 0;i < 5; i++){
    for(int j = 0; j < 3; j++){
        System.out.println(“i的值是:”+i+“,j的值是:”+j);    }
}

嵌套循環的執行順序是從外到內
使用循環嵌套時,內層和外層循環的控制變量不能相同
循環嵌套結構的書寫,要體現循環層次的關系
避免太多和太深的循環嵌套結構

練習9:

打印9x9乘法表
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
…

3.5 循環控制

3.5.1 break

某些時候需要在某種條件出現時強行終止循環,而不是等到循環條件為false時才退出循環

break 主要用在循環語句或者 switch 語句中,用來跳出整個語句塊

break 跳出最裏層的循環,並且繼續執行該循環下面的語句。

練習10:

數組存放有 1 到 10,10個整數,輸出 1 到 10 (含10)中的偶數。要求必須使用到 break 關鍵字。

3.5.2 continue

continue 適用於任何循環控制結構中。作用是讓程序立刻跳轉到下一次循環的叠代。

在 for 循環中,continue 語句使程序立即跳轉到更新語句。

在 while 或者 do…while 循環中,程序立即跳轉到布爾表達式的判斷語句。

練習11:

使用continue,代替break,實現練習10

4. 練習和實踐

1、寫一個將十進制數轉換成二進制的程序。
2、寫一個用於計算兩個整數的最大公約數和最小公倍數的程序。
3、任意一個數,計算每一位的和。
4、輸出直角三角形、倒等腰三角形。
5、打印出所有的“水仙花數”,所謂“水仙花”是指一個三位數,其各位數字立方和等於該數的本身
    例如:153是一個“水仙花數”

3. 流程控制