2. 루프용 JAVA 분기 구조 스위치 구조

1 가지 구조

1.1 개요
순차 구조의 프로그램은 계산, 출력 등의 문제는 해결할 수 있지만
판단하고 선택할 수는 없습니다. 먼저 판단하고 선택해야 하는 문제의 경우 분기 구조를 사용해야 합니다.

1.2 형태

여기에 이미지 설명 삽입

说明:条件表达式必须是布尔表达式(关系表达式或逻辑表达式)或 布尔变量。

구현 프로세스:

  1. 먼저 조건식을 판단하여 결과가 참인지 거짓인지 확인합니다.
  2. 참이면 명령문 블록을 실행합니다.
  3. false인 경우 명령문 블록이 실행되지 않습니다.

사진 설명을 추가해주세요

结构 2::if...else

체재:

if(条件表达式) {
    
    
 语句块 1; }else {
    
    
 语句块 2; }

执行流程:

  1. 먼저 조건식을 판단하여 결과가 참인지 거짓인지 확인합니다.
  2. 참이면 문 블록 1을 실행합니다.
  3. 거짓이면 블록 2 실행

사진 설명을 추가해주세요

1.3.1 실습: 제품 할인의 예

패키지 만들기: cn.tedu.basic
클래스 만들기: TestDiscount.java
요구 사항: 사용자가 입력한 원래 가격을 받습니다. 1000개 이상 주문 시 10% 할인, 2000개 이상 주문 시 20% 할인, 5000개 이상 주문 시 50% 할인

package cn.tedu.basic;

import java.util.Scanner;

/**需求:接收用户输入的原价,满1000打9折,满2000打8折,满5000打5折*/
public class TestDiscount {
    
    
	public static void main(String[] args) {
    
    
		//1.提示用户输入原价
		System.out.println("请输入商品原价:");
		//2.接收用户输入的原价
		double price = new Scanner(System.in).nextDouble();                     
		//3.计算打折后的价格
		//3.1定义变量用来保存打折后的价格
		double count = price;//初始值是商品的原价
		//3.2判断用户的打折段位并打折
		if(price >= 5000) {
    
    //满5000
			count = price *0.5;//打5折
		}else if(price >= 2000) {
    
    //满2000
			count = price * 0.8;//打折8折
		}else if(price >= 1000) {
    
    //满1000
			count = price *0.9;//打9折
		}
//		if(1000 <= price && price< 2000) {
    
    
//			count = price *0.9;
//		}else if(2000 <= price && price < 5000) {
    
    
//			count = price * 0.8;
//		}else if(price >= 5000) {
    
    
//			count = price *0.5;
//		}
		//3.3输出用户实际支付的价格
		System.out.println("您实际应该支付:"+count);
	}
}

1.3.2 실습: 통계학자가 순위를 매기는 경우

package cn.tedu.basic;

import java.util.Scanner;

/*本类用于判断学员分数的档位*/
public class TestScore {
    
    
	public static void main(String[] args) {
    
    
		//1.提示并接收学员的分数
		System.out.println("请输入你的分数:");
		int score = new Scanner(System.in).nextInt();
		/*90分及以上  优秀
		 *80-89 良好
		 *70-79 中等
		 *60-69 及格
		 *60分及以下 不及格 */
		
		/**为了增强程序的健壮性,如果用户输入的数据不符合规则,就结束*/
		if(score <0 || score >100 ) {
    
    
			System.out.println("输入数据不合法,请重新输入!!!");
		}else {
    
    
			//2.判断分数的段位,并输出结果
			if(score >= 90) {
    
    //大于90
				System.out.println("优秀!");
			//}else if(score>=80 && score <=89) {
    
    
			}else if(score>=80) {
    
    //[80,90)
				System.out.println("良好!");
			}else if(score>=70) {
    
    //[70,80)
				System.out.println("中等!");
			}else if(score>=60) {
    
    //[60,70)
				System.out.println("及格!");
			}else {
    
    //小于60
				System.out.println("不及格!");
			}
		}	
	}
}

관행:

定义两个整数,分别为 small 和 big,如果第一个整数 small 大于第二个整数 big,就交换。输出显示 small 和 big 变量的值。

public class IfElseExer3 {
    
    
 public static void main(String[] args) {
    
    
 int small = 10;
 int big = 9;
 if (small > big) {
    
    
 int temp = small;
 small = big;
 big = temp;
 }
 System.out.println("small=" + small + ",big=" + big);
 } 

}

관행:

编写程序,声明 2 个 int 型变量并赋值。判断两数之和,如果大于等于 50,打印“hello world!”

public class IfElseExer5 {
    
    
 public static void main(String[] args) {
    
    
 int num1 = 12, num2 = 32;
 
 if (num1 + num2 >= 50) {
    
    
 System.out.println("hello world!");
 }
 } 
}

2 스위치 구조

执行流程

第 1 步:스위치의 표현식 값에 따라 각 케이스가 차례로 일치합니다. 특정 경우에 표현식의 값이
상수 값과 같으면 해당 경우에 실행문을 실행한다.
第 2 步:이 경우의 실행문을 실행한 후
情况 1:break가 발생하면 break를 실행하고 현재 switch-case 구조에서 빠져나오고
情况 2:break가 발생하지 않으면 이후 다른 경우에 실행문을 계속 실행합니다. 현재 사례.
—>case 침투... break 키워드를 만나거나 case 및 default의 모든 실행문이 실행될 때까지 현재
switch-case 구조 에서 빠져나옵니다.

2.1 개요
switch case 문은 변수가 일련의 값 중 특정 값과 같은지 판단하는 데 사용되며 각 값을 분기라고 합니다.
케이스가 성립되면 디폴트를 포함한 모든 케이스는 이 케이스로부터 프로그램 종료 또는 중단 프로그램을 만날 때까지 역방향으로 관통된다.

2.2 형태

여기에 이미지 설명 삽입

2.3 실습: 숫자 일치

패키지 생성: cn.tedu.basic
클래스 생성: TestSwitch.java

package cn.tedu.basic;
/*本类用于练习switch结构*/
/**总结:
 * 1.变量a的类型byte short char int String
 * 2.会拿着变量a的值依次与case后的值做比较,如果不加break,
 *        会向后穿透所有case,包括default
 * 3.如果设置了default“保底选项”,并且没有任何case匹配到的话,就执行default
 * 4.break与default是可选项,根据具体业务来决定加不加
 * */
public class TestSwitch {
    
    
	//1.创建程序的入口函数main
	public static void main(String[] args) {
    
    
		//2.定义一个变量
		int a = 19;
		//3.完成switch结构的测试
		switch(a) {
    
    
			case 1 : System.out.println(1);break;
			case 2 : System.out.println(2);break;
			case 3 : System.out.println(3);break;
			case 4 : System.out.println(4);break;
			case 5 : System.out.println(5);break;
			default : System.out.println(0);
		}		
	}
	
}

2.4 실습: Switch의 문자열 유형

사용 클래스: TestSwitch.java

package cn.tedu.basic2;
/**本类用来测试switch结构2*/
public class TestSwitch2 {
    
    
	public static void main(String[] args) {
    
    
		String day = "星期五";
		switch(day) {
    
    
			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;
			default : System.out.println("想吃点啥吃点啥吧~");
		}
	}
}

2.5 스위치 구조 주의사항

switch 문의 변수 유형은 byte, short, int, char, String(jdk1.7 이후 지원)
switch 문은 여러 case 문을 가질 수 있습니다.
1. 각 case 뒤에는 비교할 값과 콜론이 옵니다. 그리고 이 값의 데이터 타입은 변수의 데이터 타입과 일치해야 합니다
2. 변수의 값이 case문의 값과 같을 때 case문의 내용을 실행하기 시작합니다.실행 후, 이 코드 줄에 중단이 있는지 판단합니다
.케이스 침투 현상이 있을 것입니다.4
.있는 경우 실행을 종료하고, 그렇지 않은 경우 계속 역방향으로 실행하며 기본
5 를 포함하여 모든 케이스에 침투합니다. . switch 문은 default 분기를 포함할 수 있으며 일반적으로 switch 문 끝에 작성됩니다
.

스위치 케이스에서 라마바다 표현 사용

lamabada 표현식을 사용할 때 jdk를 jdk12 이상으로 변경해야 합니다.

사진 설명을 추가해주세요

package com.cy;

public class Gh {
    
    

    public static void main(String[] args) {
    
    
    
        int a=1;

        switch (a){
    
    

            case 1  -> System.out.println("今天是星期一");
            case 2  -> System.out.println("今天是星期二");
            case 3  -> System.out.println("今天是星期三");
            case 5  -> System.out.println("今天是星期五");
            default -> System.out.println("今天是星期六");
        }
        }
    }

3 루프 구조

3.1 for
루프 구조란 프로그램 내에서 특정 기능을 반복적으로 실행해야 하는 프로그램 구조를 말합니다.
루프 본문의 조건에 따라 특정 기능을 계속 실행할지 또는 루프를 종료할지 판단합니다.
판단 조건에 따라 루프 구조는 먼저 판단하고 실행하는 루프 구조와 실행 후 판단하는 루프 구조로 세분할 수 있다.

3.2 양식

여기에 이미지 설명 삽입

3.3 for 루프 실행 순서

분명히 하나의 인쇄 문만 작성했는데 왜 여러 개의 숫자를 인쇄했습니까?
다음 그림이 for 루프의 실행 순서를 이해하는 데 도움이 되었으면 합니다.

여기에 이미지 설명 삽입

说明:

• for(;;) 안의 두 개; 더도 말고 덜도 말고 • ①초기화 부분은 여러 개의 변수를 선언할 수 있지만 쉼표
로 구분된 같은 유형이어야 합니다.
false이면 루프를 종료합니다.
④ 쉼표로 구분된 여러 변수 업데이트가 있을 수 있습니다.

3.4 연습: 슬로건 100번 인쇄/0~10 인쇄/10~0 인쇄/8,88,888,8888 인쇄,

package cn.tedu.basic;
/**本类用来测试循环结构for循环*/
public class TestFor {
    
    
	public static void main(String[] args) {
    
    
		//需求:打印100次自己的宣言
		//for(开始条件;循环条件;更改条件){循环体;}
		for(int i = 1;i<=100;i++) {
    
    
			System.out.println(“又不是没那条件,干就完啦!”);
		}
		//需求:打印0到10
		//for(开始条件;循环条件;更改条件){循环体;}
		//0 1 2 3 4 5 6 7 8 9 10
		//从哪开始:0
		//到哪结束:10
		//怎么变化:+1 ++
		for(int i = 0;i<=10;i++) {
    
    
			System.out.println(i);
		}
		System.out.println("**********************");
		//需求:打印10到0
		//10 9 8 7 6 5 4 3 2 1 0
		//从哪开始:10
		//到哪结束:0
		//怎么变化:-1  --
		//for(开始条件;循环条件;更改条件){循环体}
		for(int i = 10 ;i >= 0;i--) {
    
    
			System.out.println(i);
		}
		//需求:打印8,88,888,8888,
		//8 88 888 8888
		//从何开始:8
		//到哪结束:8888
		//如何变化:*10+8
		for(int i =8 ; i <= 8888 ; i=i*10+8) {
    
    
			System.out.print(i+",");//使用的是print(),打印后不换行
		}
	}
}

3.5 연습문제: [1,100] 안의 원소들의 합, 짝수의 합, 짝수의 개수 구하기

package cn.tedu.basic;
/*本类用于测试for循环结构2*/
public class TestFor2 {
    
    
	public static void main(String[] args) {
    
    
		//m1();
		//m2();
		m3();
	}
	/*需求:求出1-100以内所有偶数的个数*/
	private static void m3() {
    
    
		//1.定义变量用来保存偶数的个数
		int count = 0;
		//2.创建循环,依次循环1-100范围内的数
		for(int i = 1;i<101;i++) {
    
    
			//3.过滤出来要统计个数的偶数
			if(i % 2 ==0) {
    
    //说明这是一个偶数
				//4.对偶数的个数进行累计
				//count = count +1;
				count++;
				//++count;
			}
		}
		//5.打印最终统计的个数
		System.out.println(count);
	}
	/*需求:求出1-100以内所有偶数的和*/
	private static void m2() {
    
    
		//1.定义变量用来保存最终求和的结果
		int sum = 0;
		//2.创建循环,依次循环1-100范围内的数
		for(int i = 1;i <101;i++) {
    
    
			//3.过滤出来需要累加的偶数
			if(i%2 == 0) {
    
    
			//if(i%2 == 1) {//过滤奇数
				//4.能进来,说明是偶数,累加
				sum = sum +i;
			}
		}
		//5.在for循环结束以后,打印所有偶数累加的和
		System.out.println(sum);
	}
	/*需求:求出1-100以内所有数的和*/
	private static void m1() {
    
    
		//1.定义一个变量用来保存求和的结果
		int sum = 0;
		//2.创建循环,依次循环1-100范围内的数
		for(int i = 1;i<=100;i++) {
    
    
			//3.将本轮循环到的数字累加到最终的结果中
			sum = sum + i;
		}
		//4.打印最终累加的结果
		System.out.println(sum);
	}
}

4 확장
루프가 실행 중인 것을 보려면 다음 도구를 사용할 수도 있습니다.

추천

출처blog.csdn.net/weixin_58276266/article/details/131460443