JavaSE-05流程控制

顺序控制

程序从上到下逐行执行,中间没有判断和跳转。

public class Hello{

	//main方法
	public static void main(String[] args){
		int n1 = 10;
    int n2 = n1+1;
	}
}


//错误的顺序
public class Hello{

	//main方法
	public static void main(String[] args){
    int n2 = n1+1;
		int n1 = 10;
	}
}

分支控制

if语句

if(条件:布尔类型的数据,可以是表达式,也可以用逻辑运算符){ //如果条件为 true,执行语句 };

条件为ture,进入代码执行模块。

if..else语句

if(条件表达式){ //满足条件执行的语句 } else { //不满足条件的执行语句 } ;

条件为ture,进入满足条件的代码执行模块,条件为false,进入不满足条件的代码执行模块。

if..else if .. else语句

if(条件表达式){ //满足条件 1 的执行语句 } else if(条件表达式){ //可以有多个 else if 块 //满足条件 2 的执行语句 } else { //不满足条件的执行语句 } ;

多个条件的代码模块,满足任一条件进入相应的代码执行模块,执行完毕后跳出此结构,全部不满足进入else对应的代码模块。

执行一个匹配条件后直接跳出if代码块 ,不会执行下一个匹配条件

public class IfDemo{

	//main方法
	public static void main(String[] args){	
		int month = 1;
		int age = 20;
		if(4 <= month && month<= 10){
			if(18 <= age && age <= 60 ){
				System.out.println("60元");
			}else if (18 < age){
				System.out.println("30元");
			}else if(age > 60){
				System.out.println("30元");
			}
		}else{
			if(age >= 18){
				System.out.println("40元");
			}else{
				System.out.println("20元");
			}
		}
	}
}

switch

switch(数据:byte、short、int、char、字符串、枚举)
{
case 数据:{//执行语句; break;

case 数据:{//执行语句}; break;

……

default: {//执行语句; break;
}
  
/*
	1.表达式的数据类型和case后的常量类型一致,或者是可以自动转换成和case的常量类型相互比较的类型
	2.表达式的类型必须是:byte,short,int,char,enum,String
	3.case中的值必须是常量
	4.default是可选的,如果没有default,也没case入口,跳出Switch
	5.break; 遇到跳出Switch,如果没有程序就顺序执行到Switch结尾
*/

import java.util.Scanner;
public class SwitchExercise{

	//main方法
	public static void main(String[] args){
		Scanner myScanner = new Scanner(System.in);
		//转换大写
		System.out.println("请输入一个字符(a-e)");
		char c1 = myScanner.next().charAt(0);

		switch(c1){
			case 'a':
				System.out.println("A");
				break;
			case 'b':
				System.out.println("B");
				break;
			case 'c':
				System.out.println("C");
				break;
			case 'd':
				System.out.println("D");
				break;
			case 'e':
				System.out.println("E");
				break;
			default:
				System.out.println("other");
		}


		//成绩60以上合格
		System.out.println("请输入一个成绩");
		double score = myScanner.nextDouble();
		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("输入有误");
		}


		//打印四季
		System.out.println("请输入一个月份");
		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 1:
			case 2:
			case 12:
				System.out.println("冬");
				break;
			default:
				System.out.println("月份有误");
		}

	}
}

选择

1.如果判断具体数值不多,表达式的类型是byte,short,int,char,enum,String,建议使用switch
2.对于区间判断,对结果为boolean类型判断,使用if

循环控制

for

for (初始化语句; 判断条件; 控制条件) { 
  // 循环体 
}

1、for循环开始,会首先执行初始化语句,完成所需数据的定义和初始化;

2、紧接着执行判断条件,此时,判断条件有可能成立,也有可能不成立:

3、如果条件不成立(判断条件返回false):循环立即结束;

4、反之,如果条件成立(判断条件返回true):执行循环体,这时,会把循环体中所有代码执行一遍,然后,执行控制条件,到此为止,第一次循环执行结束,打印了信息;

5、for循环并没有终止执行,接下来,它继续执行判断条件,检查循环继续执行的条件是否成立,同样的:如果条件不成立(判断条件返回false):循环立即结束;

6、反之,如果条件成立(判断条件返回true):执行循环体,这时,会把循环体中所有代码再执行一遍,然后,再执行控制条件,到此为止,第二次循环执行结束,再一次打印信息;

7、就这样一直重复下去,直到判断条件不成立,循环结束。

//1到100求和
public class Main {
    public static void main(String[] args) {
        int sum = 0;
        for (int i=1; i<=100; i++) {
            sum = sum + i;
        }
        System.out.println(sum);
    }
}

多重循环

/*
	求 1+(1+2)+(1+2+3)+...+(1+2..100)的和
*/
public class HomeWork08{
	public static void main(String[] args){
		int sum = 0;
		for(int i = 1;i <= 100;i++){
			for(int j = 1; j <= i; j++){
				sum += j;
			}
		}

		System.out.println(sum);
	}
}

多层循环,最外层的循环执行一次,内循环执行一轮。

while

while (条件表达式) {
    循环语句;
}
// 继续执行后续代码

while循环在每次循环开始前,首先判断条件是否成立。如果计算结果为true,就把循环体内的语句执行一遍,如果计算结果为false,那就直接跳到while循环的末尾,继续往下执行。

public class Main {
    public static void main(String[] args) {
        int sum = 0; // 累加的和,初始化为0
        int n = 1;
        while (n <= 100) { // 循环条件是n <= 100
            sum = sum + n; // 把n累加到sum中
            n ++; // n自身加1
        }
        System.out.println(sum); // 5050
    }
}

Do..while

do {
    执行循环语句;
} while (条件表达式);


do while循环会至少循环一次,do while循环则是先执行循环,再判断条件,条件满足时继续循环,条件不满足时退出。

public class Main {
    public static void main(String[] args) {
        int sum = 0;
        int n = 1;
        do {
            sum = sum + n;
            n ++;
        } while (n <= 100);
        System.out.println(sum);
    }
}

流程控制几个关键字

break:使用break语句跳出当前循环。也就是整个循环都不会执行了。
continue:提前结束本次循环,直接继续执行下次循环。
return:跳出所在方法
posted @ 2022-05-23 19:02  九天揽月丶  阅读(85)  评论(0)    收藏  举报