1. 程式人生 > >JAVA基礎(13)---順序和選擇控制語句

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("平局");
		}
	
	}

}