Javaの基礎:フロー制御(分岐フローなら分岐、スイッチ分岐)

1.1 プロセス管理

コマンド・プロシージャの実行フローと実行順序。

1.1.1 プロセス管理の分類

I. シーケンス フロー

プログラムは行ごとに実行されます。

プログラムの実行中、さまざまなビジネス状況に応じてさまざまな戦略が採用される場合があります。さまざまなコード フローを実行します。

III. 循環プロセス

一部のコードは、これらのコードを繰り返し記述する必要なく、プロセスを介して前後に実行できることが望まれます。

1.2 分岐プロセス

1.2.1 スイッチ分岐

zhuanlan.zhihu.com/p/408799706   JDK17 switchの使用

switch(month){
    case 12,1,2->System.out.println("你就像那冬天里的一把火");	
    case 3,4,5->System.out.println("春天在哪里呀!春天在哪里~");
    case 6,7,8->System.out.println("夏天夏天悄悄过去 留下小秘密");
    case 9,10,11->System.out.println("就让秋风带走我的思念 ");
}
复制代码
//测试switch语法结构
public class SwitchTest{
	public static void main(String[] args) {
		
		//声明一个变量 这个变量存储月份1-12, 通过存储的变量的值判定当前月份所属的季节

		//1:声明变量存储月份
		char month = 5;

		//2:通过switch去完成
		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("您的输入有误。。。");break;	
		}


		System.out.println("GAME OVER");


	}
}
复制代码
I. 文法構造
switch(expression){
    case value1:
        statement1;break;
    case value2:
        statement2;break;
   	case value3:
        statement3;break;
    ............. 
    default:
        statement3;[break;]
}
复制代码
II. 実行順序
  • 式の値を評価する
  • 対応するケースを順に照合し、一致した場合、対応する実行ステートメントが実行されます。
  • 必ず後でブレークして、スイッチ構造全体から飛び出してください。
  • すべてのケースが満たされない場合、default が存在する場合はそれが実行されます。
III. 注意事項
  • 式の結果は、自動型変換によって int に変換できます。使用できる基本データ型は、byte、short、int、および char の 4 種類のみです。
  • JDK1.5その後、列挙型がサポートさEnumれ、JDK1.7文字列文字列が後でサポートされます。

1.2.2 if 分岐構造

// Math.random() 指定区间的随机数(整数)  [1,8]  [min,max]  
// (int)(Math.random()*(max-min+1)+min)
复制代码
I、単枝構造
//测试if单分支
public class IfTest01{
	public static void main(String[] args) {
			

		// 生成一个随机数 查看随机数是否大于50 大于则显示随机数的结果反之则结束

		double random = Math.random(); //[0-1)随机小数
		System.out.println(random);


		// Math.random() 指定区间的随机数(整数)  [1,8]  [min,max]  
		// (int)(Math.random()*(max-min+1)+min)

		// 产生一个[45,80]
		int num = (int)(Math.random()*36+45);
		System.out.println(num);


		//判定
		if(num>50){
			System.out.println("产生的数字大于50,数字是:"+num);
		}


		System.out.println("GAME OVER");
	}
}
复制代码
A. 文法構造
if(expression){
    statement;
}
复制代码
B. 実行順序
  • 結果が true の場合は式の結果を判断し、対応する実行ステートメントを実行します。if 単一分岐全体を終了します。
  • 式の結果が false の場合は、if シングル ブランチをスキップして、後続のコードを実行します。
C. 注意事項
  • ブランチは比較的単純であり、より複雑なビジネスを十分に活用できない場合があります。
// 声明一个变量
boolean flag = true;

if(flag=false){
    System.out.println("aa");
}

System.out.println("bb");
复制代码
II. 二重分岐構造
//测试if双分支
public class IfTest02{
	public static void main(String[] args) {
			
		// 判定某个数字的奇偶性

		// 1: 随机生成一个数字 [20,56]
		int random = (int)(Math.random()*37+20);

		System.out.println("产生的随机数是:"+random);



		//2: 判定奇偶性
		//boolean flag = (random%2)==0;
		/*if((random%2)==0){
			System.out.println("产生的随机数是:"+random+",它是一个偶数");
		}else{ //flag = false
			System.out.println("产生的随机数是:"+random+",它是一个奇数");
		}*/

		String msg = (random&1)==1?"奇数":"偶数";

		//System.out.println(msg);
		System.out.println("产生的随机数是:"+random+",它是一个"+msg);


		System.out.println("GAME OVER");
		
	}
}
复制代码
A. 文法構造
if(expression){
    statement1;
}else{
    statement2;
}
复制代码
B. 実行順序
  • 結果が true の場合は式の結果を判定し、対応する実行ステートメントを実行しstatement1ます ; if 二重分岐全体を終了します
  • 式の結果が false の場合はstatement2 を実行し、if 二重分岐をスキップして後続のコードを実行する
C. 注意事項
  • ブランチは比較的単純であり、より複雑なビジネスを十分に活用できない場合があります。
  • 二重分岐の if-else は 1 回実行する必要があります。
III. 多分岐構造
//测试if多分支

// 分别使用if和switch 来完成方向控制
// 45上 46右 47下 48左 

public class IfTest03{
	public static void main(String[] args) {
			
		// 随机生成一个分数 判定分数的等级
		// 100 NB  [90-100) 优秀  [80-90) 良好  [70-80) 还行  [60-70) 勉强 

		//1:生成一个随机数
		int score = (int)(Math.random()*92+9);
		System.out.println("生成的分数是:"+score);

		if(score==100){
			System.out.println("NB");
		}else if(score>=90 && score<100){
			System.out.println("优秀");	
		}else if(score>=80 && score<90){
			System.out.println("良好");	
		}else if(score>=70 && score<80){
			System.out.println("还行");	
		}else if(score>=60 && score<70){
			System.out.println("勉强");	
		}else{
			System.out.println("男女混合双打");
		}

		System.out.println("GAME OVER");

	}
}
复制代码
A. 文法構造
if(expression1){
    statement1;
}else if(expression2){
    statement2;
}else if(expression3){
    statement3;
}..........{
    
}[else{    statementN;}]
复制代码
B. 実行順序
  • 判定expression1結果が真の場合、対応する実行文を実行するstatement1; 複数分岐の if 全体を終了する
  • 式の結果が false の場合、判定expression2の結果 、結果が true の場合、statement2 を実行し、次に if マルチブランチをスキップして、後続のコードを実行します
  • 等々
  • すべての結果が満たされないまで、コードにelseがある場合は、elseの内容を実行します
C. 注意事項
  • 複数の分岐があるとコードが肥大化する可能性があるため、通常、3 つ以上の分岐を持つことはお勧めしません。
  • 条件を記述すると、分岐全体の決定効率を適切に高めることができます。
  • インターバル判定を行うと、スイッチは等価判定となり、互いに通信できるようになります。

おすすめ

転載: juejin.im/post/7135776606500421640