一、鍵盤錄入
二、分支結構
鍵盤錄入
概述
一、鍵盤錄入:在程序運行的過程當中,可讓用戶錄入一些數據,存儲在內存的變量中,在後續的程序運行過程當中,可使用這些數據。
二、步驟:
第一步:導包,在類聲明的上面,import java.util.Scanner;
第二步:建立鍵盤錄入對象,Scanner sc = new Scanner(System.in);
第三步:調用sc對象的nextInt方法,獲取鍵盤錄入的整數
int x = sc.nextInt();(next接着基本類型:如nextDouble()等)
第四步:使用x後續處理
代碼示例java
//導包 import java.util.Scanner; class Demo_1 { //鍵盤錄入 public static void main(String[] args) { // 建立鍵盤錄入對象 Scanner sca_12 = new Scanner(System.in); //調用對象中的nextInt() 方法 int a = sca_12.nextInt(); int b = sca_12.nextInt(); System.out.println(a*b); } }
練習1spa
鍵盤錄入兩個整數,計算兩個整數的和code
代碼示例對象
練習2
鍵盤錄入三個整數,輸出三個整數的最大值blog
代碼示例three
import java.util.Scanner; class Demo_2 { public static void main(String[] args) { //鍵盤錄入三個整數,輸出三個整數的最大值 Scanner sc = new Scanner(System.in); System.out.println("請輸入第一個整數"); int a = sc.nextInt(); System.out.println("請輸入第二個整數"); int b = sc.nextInt(); System.out.println("請輸入第三個整數"); int c = sc.nextInt(); // int abMax = a > b ? a : b; // int max = abMax > c ? abMax : c;三目運算符的一種用法 int max = (a > b ? a : b) > c ? (a > b ? a : b) : c; System.out.println("三個整數的最大值爲:"+max); } }
練習3
鍵盤錄入一個整數,判斷該數字的奇偶遊戲
例如,輸出:該數字是25,是一個奇數內存
代碼示例it
import java.util.Scanner; class Demo_3 { public static void main(String[] args) { //鍵盤錄入一個整數,判斷該數字的奇偶 Scanner sc = new Scanner(System.in); System.out.println("請輸入一個數字"); int a = sc.nextInt(); //String str = a % 2 == 1 ? "奇數" : "偶數" ; String str = a % 2 == 0 ? "偶數" : "奇數" ; System.out.println(a+"是"+str); } }
分支結構
流程控制
一、在一個程序中,有不少的代碼,代碼的執行順序,就是流程。class
二、用於控制代碼流程的方式,就是流程控制 就是控制代碼的執行順序
三、流程控制的分類:
順序結構:代碼從上到下,從左到右依次執行(重點)
分支結構:到達某個狀態時,可能會有多種狀況,每種狀況都須要提早準備好,因此多條路的路口就是一個分支。代碼寫得多,程序運行的少。(重點)
循環結構:某段代碼相同或者類似,使用相同的邏輯。使用必定的格式,來完成相同代碼的反覆執行。代碼寫的少,程序運行次數多。(重點)
分支結構概述
一、到達某個狀態時,可能會有多種狀況,每種狀況都須要提早準備好,因此多條路的路口就是一個分支。代碼寫得多,程序運行的少。
二、實現格式:
if語句:if是若是的意思,知足了這種條件,才能執行相應的代碼,實現不一樣的邏輯
if
if...else
if...else if...else if....else
switch語句:根據某個變量的值,判斷符合哪一種執行條件
if語句的第一種格式
一、格式:
if (布爾表達式) {
語句體;
}
二、說明:
一、if語句後面跟着的小括號,裏面必須是boolean類型的值;if語句後面的小括號中,只要是計算結果爲boolean類型,就合法(合法不表明就有意義)
二、語句體,能夠是任意操做
三、執行流程:
一、計算布爾表達式的值,要麼爲true、要麼爲false
二、若是計算結果爲true,執行語句體
三、若是計算結果爲false,就不執行語句體
說明只有布爾表達式結果爲true纔會執行判斷語句{ }裏面的代碼
代碼示例
import java.util.Scanner; class Demo_5 { public static void main(String[] args) { //if語句的第一種格式 // if (布爾表達式){ 語句體; } Scanner sc = new Scanner(System.in); int aa = sc.nextInt(); if (aa> 10) { System.out.println(4); int a = 1; a++; System.out.println(a); if(false){ System.out.println("我是裏面的if語句"); } } System.out.println("if語句管不到我"); } }
If語句的注意事項
一、if後面跟着的小括號裏面,必須是boolean的值
二、if後面跟着的小括號裏面,只要計算結果爲boolean類型,就算合法
三、在小括號後面不要加分號,通常來講,有左大括號,就沒有分號,有分號,就沒有左大括號
四、語句體:能夠是任意語句。若是語句體只有一句,那麼大括號能夠省略。可是建議全部狀況都加上大括號,不要省略
代碼示例
class Demo_6 { public static void main(String[] args) { //if語句的注意事項 if(true/*只能寫true 或者false ,表達式的值的結果類型爲boolean*/){ System.out.println(1); } boolean b = false; if(b = true){ System.out.println(b); } if(b = false)/*;不能加分號*/{ System.out.println(";"+b); } // System.out.println("---------"); if(b = true) //if語句中若是隻有一行代碼,能夠省略大括號,可是不建議你們省略 System.out.println(b); System.out.println("if你能管到我嗎"); } }
if語句的第二種格式
一、格式:
if (條件表達式) {
語句體1;
} else {
語句體2;
}
二、說明:
一、是否有某種狀況,能夠語句體1和語句體2都不執行?不可能,else就已經包含了if不知足的全部狀態
二、是否有某種狀況,可讓語句體1和語句體2都執行?不可能,由於只要語句體1執行了,if語句就直接結束了
三、只能執行其中的一句,而且必定會執行其中一句
三、執行流程:
一、計算條件表達式的值,要麼是true、要麼是false
二、若是條件表達式的值爲true,執行語句體1
三、若是條件表達式的值爲false,執行語句體2
代碼示例
import java.util.Scanner; class Demo_7 { public static void main(String[] args) { //if語句的第二種格式 /*if(布爾表達式){ 語句體1 }else { 語句體2 }*/ System.out.println("請輸入你的年齡"); Scanner sc = new Scanner(System.in); int age = sc.nextInt(); //先判斷表達式的結果,若是爲true執行語句體1 //若是爲false執行語句體2 //思考:有沒有可能語句體1和語句體2.都執行,或都不執行? if(age >= 18){ //語句體1; System.out.println("能夠觀看此電影"); }else{ //else 其餘的,已經包含了不知足if判斷的其餘的全部狀況 //語句體2; System.out.println("未成年人禁止觀看"); } //if ....else至少要執行一個語句體 } }
if語句的第三種格式
一、格式:
if (條件表達式1) {
語句體1;
} else if (條件表達式2) {
語句體2;
} else if (條件表達式3) {
語句體3;
}
...
} else if (條件表達式n) {
語句體n;
} else {
語句體n+1;
}
二、執行流程:
一、計算條件表達式1,若是爲true,就執行語句體1,if語句結束
二、若是條件表達式1爲false,計算條件表達式2,若是爲true,就執行語句體2,if語句結束
三、若是條件表達式2位false,就計算條件表達式3.......
四、若是條件表達式1~條件表達式n全都爲false,那麼就執行語句體n+1
三、說明:
一、若是條件表達式2計算結果爲true,執行語句體2(其實這個條件的完整版本:條件表達式1不知足,而且條件表達式2知足)
二、最後的else語句能夠有也能夠沒有,若是有,就必定有執行的內容,若是沒有就可能什麼都執行不了
三、語句體1~語句體n+1是否有可能執行兩句或者兩句以上?不可能,只要其中一條語句執行了,if語句就結束了
四、語句體1~語句體n+1是否有可能一句都不執行?兩種狀況,若是沒有else語句,就可能一個語句體都不執行;若是有else語句,就必定會執行其中的一句。
代碼示例
import java.util.Scanner; class Demo_8 { public static void main(String[] args) { //if語句的第三種格式 /*if(布爾表達式1){ 語句體1; }else if(布爾表達式2){ 語句體2; }else if(布爾表達式3){ 語句體3; }else if(布爾表達式4){ 語句體4; }....... else if(布爾表達式n){ 語句體n; }else{ 語句體n+1; }*/ Scanner sc = new Scanner(System.in); System.out.println("選擇你心儀的戰隊"); int a = sc.nextInt(); if(a == 1){ System.out.println("I like RNG"); }else if(a == 2){ System.out.println("I like IG"); }else if(a == 3){ System.out.println("I like FPX"); }else if(a == 4){ System.out.println("I like SKT"); }else if(a == 5){ System.out.println("I like DWG"); }else{//不加else有可能一個語句體都不執行,加上後至少要執行一個語句體 System.out.println("垃圾遊戲,我誰都不喜歡"); } } }
switch語句
一、switch:表示英文中的開關,每一個條件都像一扇門,開着的,就能夠執行,不然就到下一扇門判斷。
二、格式:
switch (表達式) {
case 常量1:
語句體1;
break;
case 常量2:
語句體2;
break;
.........
case 常量n:
語句體n;
break;
default:
語句體n+1;
}
三、執行流程:
一、計算表達式的值,分別和各個常量匹配
二、若是和常量1匹配,那麼久執行語句體1,break,switch語句就結束了
三、若是和常量1不匹配,那麼就判斷是否和常量2匹配,若是匹配就執行語句體2,break,switch語句就結束了
四、以此類推,若是常量1~常量n全都沒有和表達式的值匹配,那麼就執行default中的內容,switch語句結束。
代碼示例
import java.util.Scanner; class Demo_9 { public static void main(String[] args) { /* switch (表達式) { case 常量1: 語句體1; break; case 常量2: 語句體2; break; ......... case 常量n: 語句體n; break; default: 語句體n+1; } */ Scanner sc = new Scanner(System.in); System.out.println("請指定一個星期的數字"); int week = sc.nextInt(); 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("星期日"); default ://能夠有,也能夠沒有,和else功能相似 System.out.println("地球上沒有你想要星期"); } } }
switch語句的注意事項
一、單詞解釋:
switch:開關;case:狀況;break:破壞、退出;default:默認
二、表達式:
Jdk1.5以前:byte、short、char、int
Jdk1.5:枚舉類型
Jdk7:String
三、case後面只能跟常量,不能跟變量
四、每一個case的語句體後面,必定要跟上一個break語句,不然就沒法結束switch語句,而且發生case穿透。Case穿透的利用:多個狀況若是是相同的執行邏輯,那麼就可使用case穿透。
五、Default語句:能夠寫也能夠不寫。若是不寫,就有可能一個語句都執行不到。建議把default語句加上。
六、Default語句能夠寫在任意位置,不管寫在什麼位置,都是最後去匹配,建議把default語句寫在最後。
七、Switch語句結束的條件:碰到了break語句;碰到了右大括號
代碼示例
import java.util.Scanner; class Demo_10 { public static void main(String[] args) { //switch語句的注意事項 Scanner sc = new Scanner(System.in); //System.out.println("請指定一個星期的數字"); //int week = sc.nextInt(); //char dou = 'c'; String dou = "ones"; switch( dou/*byte ,short ,char ,int ,String ,(枚舉enum) */){ //case 1 : //case 'a' : default ://default語句能夠放在任意的位置,不管放在那裏都是最後去匹配的 System.out.println("地球上沒有你想要星期"); //break;//default方法中間,break不要省,不然發生case穿透問題 case "one" : //case後面只能跟常量不能跟變量 System.out.println("星期一"); break;//break不能省,若是省掉就發生case穿透問題 //case 2 : //case 'b' : case "two" : System.out.println("星期二"); break; //case 3 : //case 'c' : case "three" : System.out.println("星期三"); break; //case 4 : //case 'd' : case "four" : System.out.println("星期四"); break; //case 5 : //case 'e' : case "five" : System.out.println("星期五"); break; //case 6 : //case 'f' : case "six" : System.out.println("星期六"); break; //case 7 : //case 'g' : case "seven" : System.out.println("星期日"); } } } // 3,4,5, 春天 ,6,7,8,夏天,9 , 10 ,11 秋天 12 ,1,2 冬天
If語句和switch語句的區別
一、相同點:if語句和switch語句均可以表達分支結構
二、不一樣點:
一、if語句格式相對靈活,更增強大,switch語句相對弱小。全部的switch語句均可以被if語句替代。
二、if語句更多的是作一些連續性的判斷,而switch語句更多的是作一些離散性的匹配
三、if語句每次都須要獲取表達式的值,而switch只獲取一次表達式的值,因此相對switch的效率高一些。
代碼示例
class Demo_12 { public static void main(String[] args) { //if語句和switch語句區別 //if語句連續性的判斷 int i = 60; if(i > 1 && i < 100){ // 1< i<100 System.out.println(i); } switch(j*j){//離散型的匹配 case 1: case 2: case 3: } if(j * j > 10){ }else if(j*j < 10){ } } }
練習
鍵盤錄入一個學生的成績,int類型的分數,根據錄入的分數,輸出分數等級
[90, 100],優秀 大於等於90小於等於100
[80,90),良好 大於等於80小於90
[60, 80),及格
[0, 60),不及格
使用兩種方式完成:
一、使用if語句完成
二、使用switch語句完成
代碼示例
import java.util.Scanner; class Demo_13 { public static void main(String[] args) { /* 鍵盤錄入一個學生的成績,int類型的分數,根據錄入的分數,輸出分數等級 [90, 100],優秀 大於等於90小於等於100 [80,90),良好 大於等於80小於90 [60, 80),及格 [0, 60),不及格 */ Scanner sc = new Scanner(System.in); System.out.println("請輸入學生的成績"); int score = sc.nextInt(); switch(score / 10){ case 0 : case 1 : case 2 : case 3 : case 4 : case 5 : System.out.println("不及格"); break; case 6 : case 7 : System.out.println("及格"); break; case 8 : System.out.println("良好"); break; case 9 : case 10 : System.out.println("優秀"); break; default: System.out.println("你輸入的成績不合法"); } /* if(score >= 90 && score <= 100){ System.out.println("優秀"); }else if(score >= 80 && score < 90){ System.out.println("良好"); }else if(score >=60 && score < 80){ System.out.println("及格"); }else if(score >=0 && score < 60){ System.out.println("不及格"); }else{ System.out.println("你輸入的不是成績吧"); }*/ } }