?
順序控制
程式從上到下逐行地執行,中間沒有任何判斷和跳轉,
順序控制舉例和注意事項:Java中定義變數時采用合法的前向參考,
//正確形式 public class Test{ int num1=12; int num2=num1+2; } //錯誤形式: public class Test{ int num2=num1+2;//錯誤 int num1=12; }
分支控制
1.單分支 if:
1.1基本語法:
if(條件運算式){ 執行代碼塊;(可以有多條陳述句.) }
1.2案例:
//撰寫一個程式,可以輸入人的年齡,如果該同志的年齡大于 18 歲, //則輸出 "你年齡大于 18,要對自己的行為負責,送入監獄" import java.util.Scanner;//匯入 public class If { public static void main(String[] args) { Scanner myScanner = new Scanner(System.in); System.out.println("請輸入年齡"); int age = myScanner.nextInt(); if(age > 18) { System.out.println("你年齡大于 18,要對自己的行為負責,送入監獄"); } System.out.println("單分支if程式結束..."); } }
1.3單分支if的說明:
(1)當條件運算式為true時,就會執行{}的代碼,如果為false,就不執行,
(2)如果{}中只有一條陳述句,則可以不用{},建議寫上{}
2.雙分支 if-else:
2.1基本語法:
if(條件運算式){ 執行代碼塊; } else{ 執行代碼塊2; }
2.2案例:
//撰寫一個程式,可以輸入人的年齡,如果該同志的年齡大于 18 歲, //則輸出 "你年齡大于 18,要對 //自己的行為負責, 送入監獄",否則 ,輸出"你的年齡不大這次放過你了." import java.util.Scanner;//匯入 public class IfElse { public static void main(String[] args) { Scanner myScanner = new Scanner(System.in); System.out.println("請輸入年齡"); int age int age = myScanner.nextInt(); if(age > 18) { System.out.println("你年齡大于 18,要對自己的行為負責,送入監獄"); } else {//雙分支 System.out.println("你的年齡不大這次放過你了"); } System.out.println("程式繼續..."); } }
2.3雙分支if-else的說明:
當條件運算式為成立,就會執行代碼塊1,否則執行代碼塊2,如果執行代碼塊中只有一條陳述句,則{}可以省略,否則,不能省略,
3.多分支 if-else if -....-else:
3.1基本語法:
if(條件運算式1){ 執行代碼塊1; } else if(條件運算式2){ 執行代碼塊2; } ...... else{ 執行代碼塊n; }
3.2案例:
/* 輸入保國同志的芝麻信用分: 如果: 信用分為 100 分時,輸出 信用極好; 信用分為(80,99]時,輸出 信用優秀; 信用分為[60,80]時,輸出 信用一般; 其它情況 ,輸出 信用 不及格 請從鍵盤輸入保國的芝麻信用分,并加以判斷 假定信用分數為 int */ import java.util.Scanner; public class IfelseMore { public static void main(String[] args) { Scanner myScanner = new Scanner(System.in);//接收用戶輸入 System.out.println("請輸入信用分(1-100):"); int grade = myScanner.nextInt(); //先對輸入的信用分,進行一個范圍的有效判斷 1-100, 否則提示輸入錯誤 if(grade >=1 && grade <= 100) { //因為有 4 種情況,所以使用多分支 if(grade == 100) { System.out.println("信用極好"); } else if (grade > 80 && grade <= 99) { //信用分為(80,99]時,輸出 信用優秀; System.out.println("信用優秀"); } else if (grade >= 60 && grade <= 80) {//信用分為[60,80]時,輸出 信用一般 System.out.println("信用一般"); } else {//其它情況 ,輸出 信用 不及格 System.out.println("信用不及格"); } } else { System.out.println("信用分需要在 1-100,請重新輸入:)"); } } }
3.3多分支的說明:
(1)多分支可以沒有else,如果所有條件運算式都不成立,則一個執行入口都沒有
(2)如果有else,如果里面所有條件運算式都不成立,則默認執行else代碼塊,
4.嵌套分支
在一個分支結構中又完整的嵌套了另一個完整的分支結構,里面的分支的結構稱為內層分支外面的分支結構稱為外 層分支,建議: 不要超過 3 層 (可讀性不好)
4.1基本語法:
if(){ if(){ //if-else... }else{ //if-else... } }
4.2案例:
/* 參加歌手比賽,如果初賽成績大于 8.0 進入決賽, 否則提示淘汰,并且根據性別提示進入男子組或女子組,輸入成績和性別,進行判斷和輸出資訊, 提示: double score; char gender; 接收字符: char gender =scanner.next().charAt(0) */ import java.util.Scanner; public class NestedIf { public static void main(String[] args) { Scanner myScanner = new Scanner(System.in); System.out.println("請輸入該歌手的成績"); double score=myScanner.nextDouble(); if( score > 8.0 ) { System.out.println("請輸入性別"); char gender = myScanner.next().charAt(0); if( gender == '男' ) { System.out.println("進入男子組"); } else if(gender == '女') { System.out.println("進入女子組"); } else { System.out.println("你的性別有誤,不能參加決賽~"); } } else { System.out.println("sorry ,你被淘汰了~"); } } }
5.switch 分支結構
5.1基本語法:
switch(運算式){ case 常量1: //當... 陳述句塊1; break; case 常量2; 陳述句塊2; break; ... case 常量n; 陳述句塊n; break; default: default陳述句塊; break; }
5.2案例
/* 請撰寫一個程式,該程式可以接收一個字符,比如:a,b,c,d,e,f,g a 表示星期一,b 表示星期二 … 根據用戶的輸入顯示相應的資訊.要求使用 switch 陳述句完成 */ import java.util.Scanner; public class Switch01 { public static void main(String[] args) { Scanner myScanner = new Scanner(System.in); System.out.println("請輸入一個字符(a-g)"); char c1 = myScanner.next().charAt(0); switch(c1) { case 'a' : System.out.println("今天星期一,猴子穿新衣"); break; case 'b' : System.out.println("今天星期二,猴子當小二"); break; case 'c' : System.out.println("今天星期三,猴子爬雪山.."); break; default: System.out.println("你輸入的字符不正確,沒有匹配的"); } System.out.println("退出了 switch ,繼續執行程式"); } }
5.3Switch特別說明及注意事項:
(1)switch關鍵字,表示switch分支
(2)運算式對應一個值
(3)case 常量1:當運算式的值等于常量1,就執行 陳述句塊1
(4)break:表示退出switch
(5)如果和case 常量1 匹配,就執行陳述句塊1,如果沒有匹配case 常量2
(6)如果一個都沒有匹配上,執行default
(7)運算式資料型別,應和case后的常量型別一致,或者是可以自動轉成可以相互比較的型別,比如輸入的是字符,而常量是int
(8)switch(運算式)中運算式的回傳值必須是:(byte、short、int、char、enum[列舉]、String)
double c = 1.1; switch(c){//錯誤 case 1.1://錯誤 System.out.println("ok3"); break;
(9)case子句中的值必須是常量(1,'a')或者常量運算式,而不能是變數
(10)default子句是可選的,當沒有匹配的case時,執行default,如果沒有default子句,又沒有匹配任何常量,則沒有輸出
(11)break陳述句用來在執行完一個case分支后使程式跳出switch陳述句塊;如果沒有寫break,程式會順序執行到switch結尾,除非遇到break;
6.switch和if的區別:
(1)如果判斷的具體數值不多,而且符合 byte、 short 、int、 char, enum[列舉], String 這 6 種型別,雖然兩個陳述句都可 以使用,建議使用 swtich 陳述句,
(2)其他情況:對區間判斷,對結果為 boolean 型別判斷,使用 if,if 的使用范圍更廣
回圈控制
1.for回圈控制
1.1基本語法:
for(回圈變數初始化;回圈條件;回圈變數迭代){ 回圈操作(可以多條陳述句); }
1.2案例:
//列印 1~100 之間所有是 9 的倍數的整數,統計個數及 總和. public class ForExercise { public static void main(String[] args) { int count = 0; //統計 9 的倍數個數 變數 int sum = 0; //總和 int start = 10; int end = 200; int t = 5; // 倍數 for(int i = start; i <= end; i++) { if( i % t == 0) { System.out.println("i=" + i); count++; sum += i;//累積 } } System.out.println("count=" + count); System.out.println("sum=" + sum); } }
1.3for回圈特別說明和注意事項:
(1)for 關鍵字,表示回圈控制
(2)for 有四要素: ①回圈變數初始化②回圈條件③回圈操作④回圈變數迭代
(3)回圈操作 , 這里可以有多條陳述句,也就是我們要回圈執行的代碼
(4)如果 回圈操作(陳述句) 只有一條陳述句,可以省略 {}, 建議不要省略
(5)回圈條件是回傳一個布林值的運算式
(6)for(;回圈判斷條件;) 中的初始化和變數迭代可以寫到其它地方,但是兩邊的分號不能省略,
(7)回圈初始值可以有多條初始化陳述句,但要求型別一樣,并且中間用逗號隔開,回圈變數迭代也可以有多條變數迭代陳述句,中間用逗號隔開,
2.while回圈控制
2.1基本語法:
回圈變數初始化; while(回圈條件){ 回圈體(陳述句); 回圈變數迭代; }
2.2案例:
// 列印 1—100 之間所有能被 3 整除的數 [使用 while, ] public class WhileExercise { public static void main(String[] args) { int i = 1; int endNum = 100; while( i <= endNum) { if( i % 3 == 0) { System.out.println("i=" + i); } } } }
2.3while回圈特別說明和注意事項:
(1)while回圈也有四要素
(2)只是四要素放的位置和for不一樣
(3)回圈條件是回傳一個布林值的運算式
(4)while 回圈是先判斷再執行陳述句
3.do..while回圈控制
3.1基本語法:
回圈變數初始化; do{ 回圈體(陳述句); 回圈變數迭代; }while(回圈條件);
3.2案例:
//統計 1---200 之間能被 5 整除但不能被 3 整除的 個數 public class DoWhileExercise01 { public static void main(String[] args) { int i = 1; int count = 0; //統計滿足條件的個數 do { if( i % 5 == 0 && i % 3 != 0 ) { System.out.println("i=" + i); count++; } i++; }while(i <= 200); System.out.println("count=" + count); } }
3.3do...while回圈特別說明和注意事項:
(1)回圈條件是回傳一個布林值的運算式
(2)do..while 回圈是先執行,再判斷, 因此它至少執行一次
4.跳轉控制陳述句-break
break 陳述句用于終止某個陳述句塊的執行,一般使用在 switch 或者回圈[for , while , do-while]中
4.1基本語法:
{ ...... break; ...... }
4.2案例:
//1-100 以內的數求和,求出 當和 第一次大于 20 的當前數 【for + break】 public class BreakExercise { public static void main(String[] args) { int sum = 0; //累積和 //注意 i 的作用范圍在 for{} int n = 0; for(int i = 1; i <= 100; i++) { sum += i;//累積 if(sum > 20) { System.out.println("和>20 時候 當前數 i=" + i); n = i; break; } } System.out.println("當前數=" + n); } }
4.3跳轉控制陳述句-break的特別說明和注意事項
1.break陳述句出現在多層嵌套的陳述句塊中時,可以通過標簽指明要終止的是哪一句陳述句塊,
2.標簽的基本使用
label1:{ ......
label2: { ......
label3: { ......
break;
......
}
}
}
解讀:
(1)break陳述句可以指定退出哪層
(2)label1是標簽,名字由程式員指定,
(3)break后指定到哪個label就退出到哪里
(4)在實際的開發中,盡量不要使用標簽
(5)如果沒有指定break,默認退出最近的回圈體
5.跳轉控制陳述句-continue
5.1基本語法:
{ …… continue; …… }
5.2案例:
public class Continue { public static void main(String[] args) { int i = 1; while( i <= 4) { i++; if( i == 2) { continue; } System.out.println("i=" + i); } } }
5.3跳轉控制陳述句-continue的特別說明和注意事項
(1)continue 陳述句用于結束本次回圈,繼續執行下一次回圈,
(2) continue 陳述句出現在多層嵌套的回圈陳述句體中時,可以通過標簽指明要跳過的是哪一層回圈 , 這個和前面的標簽的 使用的規則一樣.
6.跳轉控制陳述句-return
return 使用在方法,表示跳出所在的方法,在講解方法的時候,會詳細的介紹,這里我們簡單的提一下,
注意:如果 return 寫在 main 方法,退出程式
6.1案例:
for(int i=1;i<=5;i++){ if(i==3){ System.out.println("Hello World"+i); return; } System.out.println("你好,世界!"); } System.out.println("go on..");
?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/295533.html
標籤:其他
