Java 邏輯控制詳解分析

順序結構

順序結構就是按照代碼從上往下執行,我們運行的程序就是從上往下的順序結構,當遇到方法的時候,才去執行方法。例如:

System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");

在這裡插入圖片描述

當改變代碼順序的時候,輸出的結果也不一樣。例如:

System.out.println("bbb");
System.out.println("ccc");
System.out.println("aaa");

在這裡插入圖片描述

分支結構

if 語句

if 語句的基本語法(單判斷):

if(佈爾表達式){
//條件滿足時執行代碼
}

if 語句的基本語法(加否定):

if(佈爾表達式){
//條件滿足時執行代碼
}else{
//條件不滿足時執行代碼
}

if 語句的基本語法(多分支):

if(佈爾表達式){
//條件滿足時執行代碼
}else if(佈爾表達式){
//條件滿足時執行代碼
}else{
//條件都不滿足時執行代碼
}

if 語句當中可以寫很多 else if ,但是 if 和 else 隻能有一個。

代碼實例 1:判斷一個數是奇數還是偶數:

int num = 10;
if (num % 2 == 0) {
    System.out.println("num 是偶數");
} else {
    System.out.println("num 是奇數");
}

在這裡插入圖片描述

代碼實例2:判定一個數是正數還是負數。

int num = 10;
if (num > 0) {
    System.out.println("num 是正數");
} else if (num < 0) {
    System.out.println("num 是負數");
} else {
    System.out.println("num 是 0");
}

在這裡插入圖片描述

代碼實例3:判定一年是不是閏年。

因為閏年的規律是:如果這一年是 4 的倍數,且不是 100 的倍數,那麼這一年就是閏年。或者這個數能整除 400 。

Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
System.out.println(i + " 是閏年");
} else {
System.out.println(i + " 不是閏年");
}

這裡是通過 Scanner 來輸入一個數。

在這裡插入圖片描述

懸垂 else 問題

此代碼輸出什麼?

int x = 10;
int y = 10;
if (x == 20) 
 if (y == 10)
 System.out.println("aaa");
else
 System.out.println("bbb");

在這裡插入圖片描述

這裡什麼都不輸出 ,因為這裡就涉及到瞭懸垂 else 。else 隻與最近的 if 相匹配,這裡最近的 if 是 y==10 所以就什麼都不輸出瞭。

所以我們平時寫代碼,一定要加上括號,這樣既方便別人閱讀代碼,也方便我們自己去修改。

switch 語句

基本語法:

switch(整數|枚舉|字符|字符串){
case 內容1 : {
內容滿足時執行語句;
[break;]
}
case 內容2 : {
內容滿足時執行語句;
[break;]
}

default:{
內容都不滿足時執行語句;
[break;]
}
}

switch 語句是我們常見的多分支語句,可根據 switch 括號內的變量對應的值去執行相應的 case 語句。而且每個 case 語句下面都要有 break 否則會繼續執行下面的 case 語句。當 switch 語句當中沒有匹配的 case 語句的時候,就會執行 default 語句。switch 雖然也可以嵌套,但是嵌套之後會很亂,非常不易於閱讀代碼。所以盡量不要嵌套。

代碼示例:

int day = 7;
switch (day) {
    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;
}

在這裡插入圖片描述

循環結構

while 循環

基本語法:

while(循環條件){
循環語句;
}

要註意的是:循環條件是 true 就執行循環語句,否則就結束循環。例如求 1 – 10 的和:

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

在這裡插入圖片描述

這裡就是通過 while 循環來計算 1 – 10 的和。

while 循環和 if 語句一樣,while 下面的語句可以不寫 { } , 但是不寫的時候隻能支持一條語句。所以為瞭方便閱讀和後期的維護,還是應該加上括號。就像這樣:

int num = 1; 
while (num <= 10)
 System.out.println(num); 
 num++; 

在這裡插入圖片描述

因為隻能執行一條語句,所以就一直死循環。

break

在循環結構當中,break 也是經常用到的。break 就是讓循環提前結束。例如:找到 1 – 10 中第一個 3 的倍數。

int num = 1;
while (num <= 10) {
    if (num % 3 == 0) {
        System.out.println("找到瞭 3 的倍數 為:" + num);
        break;
    }
    num++;
}

在這裡插入圖片描述

執行到 break 的時候,就會讓循環結束。但是要註意的是:如果是多層循環嵌套 break 結束的是最近的一層循環。

continue

continue 的功能是跳過這次循環, 進入下次循環。就是這次循環當中 continue 下面的代碼不執行,進入下一次循環。例如:找到 100 – 200 中所有 3 的倍數。

int num = 100; 
while (num <= 200) { 
 if (num % 3 != 0) { 
 num++;
 continue; 
 } 
 System.out.println("找到瞭 3 的倍數, 為:" + num); 
 num++; 
} 

在這裡插入圖片描述

執行到 continue 語句的時候, 就會立刻進入下次循環(判定循環條件), 從而不會執行到下方的打印語句,所以不是 3 的倍數的數就沒有打印出來。

for循環

語法:

for(表達式1;表達式2;表達式3){
循環體;
}

表達式1: 用於初始化循環變量.
表達式2: 循環條件
表達式3: 更新循環變量.

相對於 while 循環,for 循環會把這三個部分結合在一起,降低出現 bug 的可能。舉例:求 1- 100 的和

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

在這裡插入圖片描述

do while 循環

語法:

do{
循環語句;
}while(循環條件);

do while 循環是先執行循環語句,在判斷循環條件,如果循環條件為 true 就繼續循環,否則就退出循環。不論如何 do while 循環 都會執行一次。循環最後的分號一定不要忘記。舉例:求 1 – 100 的和。

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

在這裡插入圖片描述

一般 do while 很少用到, 更推薦使用 for 和 while 。

到此這篇關於Java 邏輯控制詳解分析的文章就介紹到這瞭,更多相關Java 邏輯控制內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: