1. 程式人生 > 其它 >Java學習第十九天<分支控制><巢狀分支><穿透分支><if與switch的比較>

Java學習第十九天<分支控制><巢狀分支><穿透分支><if與switch的比較>

分支控制

package chapter04.D1分支控制;

import java.util.Scanner;

public class If {
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){
if (grade == 100){
System.out.println("信用極好");
}else if (grade > 80 && grade <= 90){
System.out.println("信用優秀");
}else if (grade >=60 && grade <= 80){
System.out.println("信用一般");
}else{
System.out.println("信用不及格");
}
}else {
System.out.println("信用需在1-100,請重新輸入");
}
//如果輸入的不是整數,而是字串,可用異常處理機制
}
}

巢狀分支

package chapter04.D2巢狀分支;

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("被淘汰了");
}
}
}

穿透分支

package chapter04.D3穿透分支;

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("輸入有誤");//無需break也會退出
}
}
}

package chapter04.D3穿透分支;

public class SwitchDetail {
public static void main(String[] args) {
char c = 'a';//表示式資料型別
switch (c){
case 'a'://要和case後的常量型別一致,或是可自動轉化的型別 char>int
System.out.println("ok1");
break;
case 20:
System.out.println("ok2");
break;
default:
System.out.println("ok3");
}
}
/*
1 表示式型別只能是 byte short int char enum[列舉] String
case 語句中的值必須是常量或常量表達式,不能是變數如
char c = 'a';
char c2 = 'c';
2 default語句是可選的,沒有匹配的case執行default
若沒有default語句,沒有輸出
3 break 跳出switch語句塊
沒寫break 順序執行switch到結尾,除非遇到break (穿透)
*/
}

package chapter04.D3穿透分支;

import java.util.Scanner;

public class SwitchExercise {
public static void main(String[] args) {
System.out.println("請輸入成績");
Scanner myscanner = new Scanner(System.in);
int score=myscanner.nextInt();

if (score>=0&&score<=100){
switch ((int) (score/60)){
case 0:
System.out.println("不及格");
break;
case 1:
System.out.println("及格");
break;
}
}else {
System.out.println("輸入有誤,請在0-100間");
}

}
}

package chapter04.D3穿透分支;

import java.util.Scanner;

public class SwitchExercise02 {
public static void main(String[] args) {
System.out.println("輸入月份");
Scanner myscanner = new Scanner(System.in);
int month = myscanner.nextInt();
switch (month){
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;
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
default:
System.out.println("輸入有誤");
}

}
}

if與switch的比較

switch 和 if 比較
1 如果判斷具體數值不多,符合 byte short int char enum[列舉] String 6型別,建議用switch(雖然if也能用)
2 對於區間和邏輯判斷,用if if使用範圍更廣