JAVA基礎(13)---順序和選擇控制語句
流程控制
Java中的流程控制有三類:順序控制、選擇控制和迴圈控制
順序控制語句
在Java中的程式的執行流程:
從main方法開始執行,從main方法的方法體的第一句開始執行,依次按照語句的先後順序:從上而下 逐句執行。
選擇控制語句(1)
在程式的執行過程當中,在某些時候,我們對程式碼的執行,需要在滿足一定的條件之後才去執行。
在Java如何來表示這些條件呢?
選擇結構的第一種表示形式
if(條件表示式/布林表示式){
執行語句;
}
選擇結構的第二種表示形式
if(條件表示式/布林表示式){
語句1;
}else{
語句2;
}
選擇結構的第三種表示形式
if(條件表示式1){
語句1;
}else if(條件表示式2){
語句2;
}else if(條件表示式3){
語句3;
}
...
選擇結構的第四種表示形式
if(條件表示式1){
語句1;
}else if(條件表示式2){
語句2;
}else if(條件表示式3){
語句3;
}
...
else{
}
選擇結構的第五種表示形式
if(條件表示式1){
if(條件表示式1-1){
語句1-1;
}else if(條件表示式1-2){
語句1-2;
}
}else if(條件表示式2){
if(條件表示式2-1){
語句2-1;
}else if(條件表示式2-2){
語句2-2;
}else{
}
}else{
}
總結:
針對Java中的選擇結構 if
基本形式:
if(條件表示式){
}else if(){
}else{
}
在以上的三個大括號之間 可以出現我們所接觸過的任何的程式碼,包括我們 if 的五種結構的任意一種或多種。if 可以單獨出現,但是else絕對不能單獨出現,必須和if一起出現。
/*
程式是針對特定的問題 給出特定的解決方案
程式所結局的問題就成為程式的需求
需求1 在學生考試中,如果成績達到60 則視為考試合格
程式碼書寫規範:
1 在程式碼編寫過程中,所有的識別符號的命名必須嚴格按照Java中的識別符號的命名規則來進行命名;
2 對於識別符號的命名,需要做到見名知意;
3 除成員 變數 的宣告語句之外的所有的語句都必須寫在方法的內部;
4 程式的結構一定要足夠良好:如果當前語句在的上一級有大括號,
那麼當前語句就應當比上一級縮排一個tab鍵
5 大括號需要成對出現:再寫程式碼的過程中, 一般先寫程式碼的結構,然後再去填充結構中所需要的程式碼;
6 在所有的表示式中,運算子的兩端與運算元之間需要預留一個空格的位置
需求2:在學生考試中,如果成績達到60 則視為考試合格 否則 很遺憾 你要參加補考了
需求3:對考試成績進行分類評定
100 -- 90 優秀
80--90 良好
60 -- 80 合格
> 60 不合格
*/
public class IfDemo1{
public static void main(String[] args){
//int score = 82;
/*在學生考試中,如果成績達到60 則視為考試合格
if(score >= 60){
System.out.println("成績合格!");
}
*/
/*
在學生考試中,如果成績達到60 則視為考試合格 否則 很遺憾 你要參加補考了
*/
/*
if(score >= 60){
System.out.println("恭喜你,你的考試通過了!");
}else{
System.out.println("很遺憾,你需要參加補考了!");
}
*/
/*
需求3:對考試成績進行分類評定
100 -- 90 優秀
80--90 良好
60 -- 80 合格
> 60 不合格
*/
/*
if( score <=100 && score >=90){
System.out.println("優秀");
}else if(score< 90 && score >=80){
System.out.println("良好");
}else if(score < 80 && score >=60){
System.out.println("合格");
}else if (score < 60){
System.out.println("不合格");
}*/
/*
if( score <=100 && score >=90){
System.out.println("優秀");
}else if(score< 90 && score >=80){
System.out.println("良好");
}else if(score < 80 && score >=60){
System.out.println("合格");
}else{
System.out.println("不合格");
}
*/
/*
需求4:對考試成績進行分類評定 成績必須在0--100之間
如果成績超出了0--100的範圍 則提示使用者 輸入的成績非法
100 -- 90 優秀
80--90 良好
60 -- 80 合格
> 60 不合格
自行完成需求5: 針對人的年齡(0--120),
0 --5 兒童
5--18 少年
18--30 青年
30--60 中年
60 --120 老年
*/
/*
if(score <= 100 && score >0){
if( score <=100 && score >=90){
System.out.println("優秀");
}else if(score< 90 && score >=80){
System.out.println("良好");
}else if(score < 80 && score >=60){
System.out.println("合格");
}else{
System.out.println("不合格");
}
}else{
System.out.println("你的成績不合法,請確認你的成績");
}
*/
/*
獲取使用者從鍵盤輸入的內容:
*/
//int score;
//獲取使用者鍵盤輸入的值:
//java.util.Scanner sc = new java.util.Scanner(System.in);
// 從鍵盤輸入的值,一類是我們的基本資料型別 二類引用型別 String
// sc.nextInt(); 代表從鍵盤輸入一個整數
// sc.next();代表從鍵盤輸入一個字串
/*System.out.println("請輸入您的成績:");
score = sc.nextInt();
if(score <= 100 && score >0){
if( score <=100 && score >=90){
System.out.println("優秀");
}else if(score< 90 && score >=80){
System.out.println("良好");
}else if(score < 80 && score >=60){
System.out.println("合格");
}else{
System.out.println("不合格");
}
}else{
System.out.println("你的成績不合法,請確認你的成績");
}
*/
/*
從鍵盤輸入字串
需求6:從鍵盤輸入賬號和密碼 如果賬號是admin 密碼是123456 則認為
使用者是註冊使用者 而且賬號和密碼正確,正常登入,提示登陸成功,否則提示
賬號或密碼錯誤。
*/
/*java.util.Scanner sc = new java.util.Scanner(System.in);
String username ;
String password;
System.out.println("請輸入您的賬號:");
username = sc.next();
System.out.println("請輸入您的密碼:");
password = sc.next();
if(username.equals("admin") && password.equals("123456")){
System.out.println("登陸成功");
}else{
System.out.println("您輸入的賬號或密碼錯誤");
}*/
/*
需求7:今天要出門 :如果天下雨 需要帶雨傘 下雨 0 不下雨 1
如果不下雨 0 代表男生 1 代表女生
如果是男生 則帶墨鏡
如果是女生:需要塗防晒霜
*/
/*
int weather ;
int sex;
java.util.Scanner sc = new java.util.Scanner(System.in);
System.out.println("請輸入今天的天氣情況(0-下雨 1-晴天)");
weather = sc.nextInt();
if(weather == 0){
System.out.println("請出門時記得帶上雨傘!");
}else if(weather == 1){
System.out.println("請輸入您的性別");
sex = sc.nextInt();
if(sex == 0 ){
System.out.println("今天天氣不錯,戴上墨鏡 ,出去約個會");
}else if(sex == 1){
System.out.println("今天天氣太晒,塗點防晒霜 ,出去約個會");
}else{
System.out.println("你是不搞錯了,你的性別有問題");
}
}*/
/*
針對需求二:做一個更改
如果成績大於等於60 就是合格 如果小於60 不合格
if(score >= 60){
System.out.println("恭喜你,你的考試通過了!");
}else{
System.out.println("很遺憾,你需要參加補考了!");
}
*/
int score = 50;
if(score >= 60){
;//這個也是一條語句 空語句 什麼都不做
System.out.println("恭喜你,你的考試通過了!");
}
else{
System.out.println("很遺憾,你需要參加補考了!");
}
}
}
選擇控制語句(2)
switch結構:
switch(表示式){
case 值1:
語句1;
break;
case 值2:
語句2;
break;
...
default:
語句n+1;
break;
}
在switch後的表示式的型別byte、short、int、char。jdk5 引入一個新的型別:列舉,jdk7 引入一個新的型別:String
需求1:一星期有7天,讓使用者從鍵盤輸入一個整數,1--7對應我們的星期一到星期天
public class SwitchDemo1{
public static void main(String[] args){
int week = 0;
java.util.Scanner sc = new java.util.Scanner(System.in);
System.out.println("請輸入你要查詢的數字(1--7):");
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("星期日");
break;
default:
System.out.println("您的輸入有誤,請輸入1--7之間的數字。");
break;
}
}
}
注意事項:
1、break 的作用:防止 switch 穿透的出現; break; 就是針對當前值執行之後結束整個 switch 的判斷;
2、case 後面的值不允許重複;
3、default 可以出現在 switch 中的任意位置而且在default之後也必須加上break;
需求2:一年有12個月 按照月份,將一年分為了四季,讓使用者從鍵盤輸入一個月份值,然後通過程式來判斷當前月份屬於哪一個季節?
/*
需求2:一年有12個月 按照月份,將一年分為了四季
12 1 2 冬季
3 4 5 春季
6 7 8 夏季
9 10 11 秋季
讓使用者從鍵盤輸入一個月份值,然後通過程式來判斷當前月份屬於哪一個季節?
*/
import java.util.Scanner;
public class SwitchDemo2{
public static void main(String[] args){
//從鍵盤獲取使用者輸入
Scanner sc = new Scanner(System.in);
int month = 0 ;
System.out.println("請輸入你要查詢的月份:");
month = sc.nextInt();
switch(month){
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("您的輸入有誤,請輸入正確的月份值!");
}
}
}
在switch中,如果多個case對應的情況是相同的,那麼就沒有必要在每一個case後面都寫上對應的處理,只需要在相同的case的最後一個case之後寫上共同的處理語句就可以了,同樣break不能省略。
需求:通過程式查詢 一 到十 所對應的繁體字
import java.util.Scanner;
public class SwitchDemo3{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你要查詢的數字對應的漢字:");
String num = "";
num = sc.next();
switch(num){
case "一":
System.out.println("壹");
break;
case "二":
System.out.println("貳");
break;
case "三":
System.out.println("叄");
break;
case "四":
System.out.println("肆");
break;
case "五":
System.out.println("伍");
break;
case "六":
System.out.println("陸");
break;
case "七":
System.out.println("柒");
break;
case "八":
System.out.println("捌");
break;
case "九":
System.out.println("玖");
break;
case "十":
System.out.println("拾");
}
}
}
if和switch的區別以及其應用的場景:
區別:if 針對的 boolea 值進行判斷, if 判斷的是一個範圍;switch 針對的是一些特定的值而且這些是可列舉的(case的情況是有限的)
聯絡:凡是能夠使用switch的 一定能夠使用 if; 但是能使用 if 的不一定能使用switch
需求:剪刀、石頭、布 讓使用者從鍵盤輸入一個對應的數字,那麼這個陣列就對應著我們的剪刀、石頭、布 中的一種當用戶選擇完成之後,我們需要針對使用者的選擇做出相應的判決
/*
需求:剪刀、石頭、布 讓使用者從鍵盤輸入一個對應的數字,那麼這個陣列就對應
著我們的剪刀 石頭 布中的一種
當用戶選擇完成之後,我們需要針對使用者的選擇 做出相應的判決
*/
import java.util.Scanner;
public class SelectDemo{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("遊戲開始");
int first =0;
int second = 0;
System.out.println("請第一位選手做出選擇(1-3)1:剪刀 2:石頭 3 布:");
first = sc.nextInt();
switch(first){
case 1:
System.out.println("你所選擇是:剪刀");
break;
case 2:
System.out.println("你所選擇是:石頭");
break;
case 3:
System.out.println("你所選擇是:布");
break;
}
System.out.println("請第二位選手做出選擇(1-3)1:剪刀 2:石頭 3 布:");
second = sc.nextInt();
switch(second){
case 1:
System.out.println("你所選擇是:剪刀");
break;
case 2:
System.out.println("你所選擇是:石頭");
break;
case 3:
System.out.println("你所選擇是:布");
break;
}
System.out.println("你們的結果為:");
if(first == 1 && second == 3 || first == 2 && second ==1 || first == 3 && second == 2 ){
System.out.println("第一位選手獲勝");
}else if(second == 1 && first == 3 || second == 2 && first ==1 || second == 3 && first == 2){
System.out.println("第二位選手獲勝");
}else{
System.out.println("平局");
}
}
}