java基礎(二)----流程控制語句跳轉控制語句

JAVA基礎(二)——流程控制語句、跳轉控制語句

一、流程控制語句

在一個程序執行的過程中,各條語句的執行順序對程序的結果是有直接影響的。也就是說程序的流程對運行結果有直接的影響。所以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現我們要完成的功能。

  • 流程控制語句分類
    • 順序結構
    • 選擇結構
    • 循環結構

  1. 順序結構

是程序中最簡單最基本的流程控制,沒有特定的語法結構,按照代碼的先後順序,依次執行,程序中大多數的代碼都是這樣執行的。總的來說:寫在前面的先執行,寫在後面的後執行.順序結構就不寫代碼演示了。

  1. 選擇結構

也被稱爲分支結構。
選擇結構有特定的語法規則,代碼要執行具體的邏輯運算進行判斷,邏輯運算的結果有兩個,所以產生選擇,按照不同的選擇執行不同的代碼。
Java語言提供了兩種選擇結構語句
(1)if語句
(2)switch語句

(1)if語句第一種格式:
if(關係表達式) {
語句體
}

public class IfDemo {
    public static void main(String[] args) {
        int x = 10;
        if(x == 10) {
            System.out.println("x等於10");
        }
        if(x == 20) {
            System.out.println("x等於20");
        }   
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

輸出結果:x等於10
當然if語句還有其他的格式,我們一起來學習一下吧!

if(關係表達式) {
語句體1;
}else {
語句體2;
}

需求:鍵盤錄入月份的值,輸出對應的季節。

import java.util.Scanner;

public class IfTest {
    public static void main(String[] args) {
        //創建鍵盤錄入對象
        Scanner sc = new Scanner(System.in);    
        //錄入數據
        System.out.println("請你輸入一個月份:");
        int month = sc.nextInt();

        if(month<1 || month>12) {
            System.out.println("你輸入的月份有誤");
        }else if(month>=3 && month<=5) {
            System.out.println("春季");
        }else if(month>=6 && month<=8) {
            System.out.println("夏季");
        }else if(month>=9 && month<=11) {
            System.out.println("秋季");
        }else {
            System.out.println("冬季");
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

輸出結果:根據你鍵盤的輸入值的大小會得到相應的結果,比如輸入3,結果爲:春季。
我們來說下怎麼實現鍵盤錄入呢?
1、導包import java.util.Scanner;在class上面。
2、創建鍵盤錄入對象:Scanner sc = new Scanner(System.in);
3、通過對象獲取數據:int x = sc.nextInt();
這樣讓我們的程序就變得更加靈活了一些。

(2)switch語句
switch語句格式:

switch(表達式) {
          case1:
            語句體1;
            break;
            case2:
            語句體2;
            break;
            …
            default:    
            語句體n+1;
            break;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

執行流程
首先計算出表達式的值
其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結束。
最後,如果所有的case都和表達式的值不匹配,就會執行default語句體部分,然後程序結束掉。
我們一起來寫一個Demo吧!

import java.util.Scanner;

public class SwitchDemo {
    public static void main(String[] args) {
        //創建鍵盤錄入對象
        Scanner sc = new Scanner(System.in);

        //控制鍵盤錄入數據
        System.out.println("請輸入一個數據(1-7):");
        int week = sc.nextInt(); //3

        //switch判斷語句
        switch(week) {
            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("你輸入的數據有誤");
                break;
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

輸出結果:根據你鍵盤的輸入值的大小會得到相應的結果,比如輸入4,結果爲:星期四。

  1. 循環結構

    • for循環
    • while循環
    • do…while循環

我們來逐個學習

  1. for循環語句
    for循環語句格式:
for(初始化語句;判斷條件語句;控制條件語句) {
         循環體語句;
    }
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

執行流程:

A:執行初始化語句
B:執行判斷條件語句,看其結果是true還是false
如果是false,循環結束。
如果是true,繼續執行。
C:執行循環體語句
D:執行控制條件語句
E:回到B繼續

我們來一起做個經典的練習吧!
需求:統計”水仙花數”共有多少個?

分析:
A:首先必須知道什麼是水仙花數
所謂的水仙花數是指一個三位數,其各位數字的立方和等於該數本身。
舉例:153就是一個水仙花數。
153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
B:定義統計變量,初始化值是0
C:三位數告訴了我們範圍,用for循環就可以搞定
D:獲取每一個三位數的個,十,百的數據
E:按照要求進行判斷
F:如果滿足要求就計數。

public class ShuixianhuaDemo {

    public static void main(String[] args) {
        //定義統計變量,初始化值是0
        int count=0;
        //三位數告訴了我們範圍,用for循環就可以搞定
        for (int i = 100; i < 1000; i++) {
            //獲取每一個三位數的個,十,百的數據
            int ge = i%10;
            int shi = i/10%10;
            int bai = i/10/10%10;
            //按照要求進行判斷
            if(i == (ge*ge*ge+shi*shi*shi+bai*bai*bai)){
                //如果滿足要求就計數。
                count++;
                System.out.println("水仙花數是:"+bai+""+shi+""+ge);
            }
        }
        System.out.println("水仙花數共有"+count+"個");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

輸出結果爲:
水仙花數是:153
水仙花數是:370
水仙花數是:371
水仙花數是:407
水仙花數共有4個

2.while循環語句
while循環語句格式:

 while(判 斷條件語句) {
         循環體語句;
   }
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

while循環和for循環可以等價轉換,但還是有些小區別的:
for循環適合針對一個範圍判斷進行操作
while循環適合判斷次數不明確操作
我們一起來做個練習。

需求:我國最高山峯是珠穆朗瑪峯:8848m,我現在有一張足夠大的紙張,厚度爲:0.01m。
請問,我摺疊多少次,就可以保證厚度不低於珠穆朗瑪峯的高度?

public class WhileDemo {
    public static void main(String[] args) {
        //定義一個統計變量,默認值是0
        int count = 0;
        //最高山峯是珠穆朗瑪峯:8848m這是最終的厚度
        //我現在有一張足夠大的紙張,厚度爲:0.01m這是初始厚度
        //爲了簡單,我把0.01變成1,同理8848就變成了884800
        int end = 884800;
        int start = 1;
        while(start<end) {
    //只要每次變化的厚度沒有超過珠穆朗瑪峯的高度,就摺疊,統計變量++
            count++;
            //摺疊一次有什麼變化呢?就是厚度是以前的2倍。
            start *= 2;
            System.out.println("第"+count+"次厚度是"+start);
        }

        //輸出統計變量。
        System.out.println("要疊"+count+"次");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

輸出結果:
第1次厚度是2
第2次厚度是4
第3次厚度是8
第4次厚度是16
第5次厚度是32
第6次厚度是64
第7次厚度是128
第8次厚度是256
第9次厚度是512
第10次厚度是1024
第11次厚度是2048
第12次厚度是4096
第13次厚度是8192
第14次厚度是16384
第15次厚度是32768
第16次厚度是65536
第17次厚度是131072
第18次厚度是262144
第19次厚度是524288
第20次厚度是1048576
要疊20次

3.do…while循環語句
do…while循環語句格式:

do {
         循環體語句;
   }while((判 斷條件語句);
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

do…while循環語句和上面的兩種循環語句又有什麼區別呢?我們來漲姿勢
區別:do…while循環至少會執行一次循環體。
for循環和while循環只有在條件成立的時候纔會去執行循環體
注意:
寫程序優先考慮for循環,再考慮while循環,最後考慮do…while循環。
while(true){}和for(;;){}都是死循環

public class DoWhileDemo {
    public static void main(String[] args) {        

        int y = 5;
        do {
            System.out.println("我愛java");
            y++;
        }while(y < 10);
        System.out.println("我愛Android ");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

輸出結果:
我愛java
我愛java
我愛java
我愛java
我愛java
我愛Android

我們學習了這麼多的循環語句,下來我們一起來學習一下循環嵌套使用,就是語句中還有語句。一起寫幾個Demo來學習一下吧!

需求:請輸出一個4行5列的星星(*)圖案。

public class StarDemo {

    public static void main(String[] args) {

        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print("*");
            }
            //我們可以通過空的輸出語句實現換行
            System.out.println();
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

輸出結果:
這裏寫圖片描述

需求:在控制檯輸出九九乘法表。

public class ChengFaDemo {

    public static void main(String[] args) {
        for (int i = 1; i < 10; i++) {
            for (int j = 1; j <i+1; j++) {  
                System.out.print(i+"*"+j+"="+i*j+"\t");
            }
            System.out.println("");
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

輸出結果:
這裏寫圖片描述

二、跳轉控制語句

Java提供了break,continue和return來實現控制語句的跳轉和中斷。

  • break 中斷
  • continue 繼續
  • return 返回 4

break的使用場景:

  • 在選擇結構switch語句中
  • 在循環語句中
  • 離開使用場景的存在是沒有意義的

break的作用:

  • 跳出循環
 public class BreakDemo {
    public static void main(String[] args) {    
        //跳出循環
        for(int x=0; x<10; x++) {
            if(x == 3) {
                break;
            }
            System.out.println("HelloWorld");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

輸出結果:控制檯打印了3遍HelloWorld。說明break跳出了循環


continue的使用場景:

  • 在循環語句中
  • 離開使用場景的存在是沒有意義的

continue的作用:

  • 單層循環和break對比後得到的結論:
    • break 退出當前循環
    • continue 退出本次循環
public class ContinueDemo {
    public static void main(String[] args) {
        for(int x=0; x<10; x++) {
            if(x == 3) {
                continue;
            }   
            System.out.println(x);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

輸出結果:0 1 2 4 5 6 7 8 9 。唯獨沒有3.可以說明,continue跳出一次循環,進入下一次的執行


return關鍵字不是爲了跳轉出循環體,更常用的功能是結束一個方法,也就是退出一個方法。跳轉到上層調用的方法。


關於return,等我們學了方法後,會詳細講解。
好了,就說這麼多吧,下次一起來學習方法還有更多,好期待。
第二次學java基礎,有很多不一樣的收穫。大家加油!

(function () { ('pre.prettyprint code').each(function () { var lines = (this).text().split(\n).length;var numbering = $('
    ').addClass('pre-numbering').hide(); (this).addClass(hasnumbering).parent().append( numbering); for (i = 1; i
    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章