Java流程控制语句详解

目录

顺序结构

分支结构

分支结构-if语句

if语句格式1

if语句格式2

if语句格式3

if语句格式3案例-岳小鹏参加Java考试

分支结构-switch语句

switch案例-年份找生肖

 switch语句-case穿透

循环语句

循环语句-for循环

for循环案例- 在控制台输出1-5和5-1的数据

循环语句-while循环

 while循环案例-珠穆朗玛峰

循环语句-do…while循环

do…while循环案例-打印五次HelloWorld

 三种循环的区别

死循环

跳转控制语句

循环嵌套

Random(产生随机数)

Random示例-在1-10之间产生随机数


流程控制语句分为顺序结构、分支结构以及循环结构。

顺序结构

顺序结构是程序中最简单最基本的流程控制

分支结构

分支结构-if语句

if语句格式1

执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体

③如果关系表达式的值为false就不执行语句体

④继续执行后面的语句内容

if语句格式2

执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体1

③如果关系表达式的值为false就执行语句体2

④继续执行后面的语句内容

if语句格式3

执行流程:

①首先计算关系表达式1的值

②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值

③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值

④…

⑤如果没有任何关系表达式为true,就执行语句体n+1。

格式1:
if (关系表达式) {
    语句体;	
}

格式2:
if (关系表达式) {
    语句体1;	
} else {
    语句体2;	
}

格式3:
if (关系表达式1) {
    语句体1;	
} else if (关系表达式2) {
    语句体2;	
} 
…
else {
    语句体n+1;
}

if语句格式3案例-岳小鹏参加Java考试

需求:岳小鹏参加Java考试,他和父亲岳不群达成承诺: 如果: 成绩为100分时,奖励一辆BMW; 成绩为(80,99]时,奖励一台iphone xs max; 当成绩为[60,80]时,奖励一个 iPad; 其它时,什么奖励也没有。 请从键盘输入岳小鹏的期末成绩,并加以判断。

分析:

①岳小鹏的考试成绩未知,可以使用键盘录入的方式获取值

②由于奖励种类较多,属于多种判断,采用if...else...if格式实现

③为每种判断设置对应的条件

④为每种判断设置对应的奖励

import java.util.Scanner;

public class Test1{
	public static void main(String[] args){
		//1.使用Scanner录入成绩
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您的期末考试成绩:");
		int score = sc.nextInt();
		//2.判断成绩是否在合法范围内 0~100
		if(score >= 0 && score <= 100){
            //合法成绩
            //3.在合法的语句块中判断成绩范围符合哪一个奖励
			if(score == 100){
				System.out.println("奖励一台BMW");
			}else if(score>80&&score<=99){
				System.out.println("奖励一台iphone xs max");
			}else if(score>=60&&score<=80){
				System.out.println("奖励一个iPad");
			}else{
				System.out.println("什么也没有!");
			}

        }else{// 非法的话, 给出错误提示
            System.out.println("您输入的成绩不合法,请重新输入!");
        }
    }
}

分支结构-switch语句

格式:
switch (表达式) {
	case 1:
		语句体1;
		break;
	case 2:
		语句体2;
		break;
	...
	default:
		语句体n+1;
		break;
}

执行流程:

  • 首先计算出表达式的值

  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。

  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

switch案例-年份找生肖

需求: 编写一个程序,为一个给定的年份找出其对应的中国生肖。中国的生肖基于12年一个周期, 每年用一个动物代表:rat、ox、tiger、rabbit、dragon、snake、horse、sheep、monkey、 rooster、dog、pig。 提示:2019年:猪 2019 % 12 == 3

//1.导包		
import java.util.Scanner;
public class Test5 {
	public static void main(String[] args) {
		//2.键盘录入想要查询的年份,使用变量接收
		Scanner scan=new Scanner(System.in);
		System.out.println("请输入您想要查询的年份:");
		int year = scan.nextInt();
		String animal;
        // 3. 多情况判断,采用switch语句实现
		switch(year%12){
                // 4. 在不同的case中,输出对应的年份
			case 0:
				animal = "monkey";
				System.out.println("这一年是"+animal+"年");
				break;
			case 1:
				animal = "rooster";
				System.out.println("这一年是"+animal+"年");
				break;
			case 2:
				animal = "dog";
				System.out.println("这一年是"+animal+"年");
				break;
			case 3:
				animal = "pig";
				System.out.println("这一年是"+animal+"年");
				break;
			case 4:
				animal = "rat";
				System.out.println("这一年是"+animal+"年");
				break;
			case 5:
				animal = "ox";
				System.out.println("这一年是"+animal+"年");
				break;
			case 6:
				animal = "tiger";
				System.out.println("这一年是"+animal+"年");
				break;
			case 7:
				animal = "rabbit";
				System.out.println("这一年是"+animal+"年");
				break;
			case 8:
				animal = "dragon";
				System.out.println("这一年是"+animal+"年");
				break;
			case 9:
				animal = "snake";
				System.out.println("这一年是"+animal+"年");
				break;
			case 10:
				animal = "horse";
				System.out.println("这一年是"+animal+"年");
				break;
			case 11:
				animal = "sheep";
				System.out.println("这一年是"+animal+"年");
				break;
		}	
	}
}

 switch语句-case穿透

如果switch语句中,case省略了break语句, 就会开始case穿透。

当开始case穿透,后续的case就不会具有匹配效果,内部的语句都会执行直到看见break,或者将整体switch语句执行完毕,才会结束。

循环语句

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

循环语句-for循环

格式:
for (初始化语句;条件判断语句;条件控制语句) {
	循环体语句;
}
  • 格式解释:

    • 初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样

    • 条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去

    • 循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情

    • 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去

  • 执行流程:

    ①执行初始化语句

    ②执行条件判断语句,看其结果是true还是false

    如果是false,循环结束

    如果是true,继续执行

    ③执行循环体语句

    ④执行条件控制语句

    ⑤回到②继续

for循环案例- 在控制台输出1-5和5-1的数据

public class ForTest01 {
    public static void main(String[] args) {
		//需求:输出数据1-5
        for(int i=1; i<=5; i++) {
			System.out.println(i);
		}
		System.out.println("--------");
		//需求:输出数据5-1
		for(int i=5; i>=1; i--) {
			System.out.println(i);
		}
    }
}

循环语句-while循环

格式:
初始化语句;
while (条件判断语句) {
	循环体语句;
    条件控制语句;
}
  • while循环执行流程:

    ①执行初始化语句

    ②执行条件判断语句,看其结果是true还是false

    如果是false,循环结束

    如果是true,继续执行

    ③执行循环体语句

    ④执行条件控制语句

    ⑤回到②继续

 while循环案例-珠穆朗玛峰

需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?

public class WhileTest {
    public static void main(String[] args) {
		//定义一个计数器,初始值为0
		int count = 0;
		//定义纸张厚度
		double paper = 0.1;
		//定义珠穆朗玛峰的高度
		int zf = 8844430;
		//因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while循环
		//折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度
		while(paper <= zf) {
			//循环的执行过程中每次纸张折叠,纸张的厚度要加倍
			paper *= 2;
			//在循环中执行累加,对应折叠了多少次
			count++;
		}
		//打印计数器的值
		System.out.println("需要折叠:" + count + "次");
    }
}

循环语句-do…while循环

格式:
初始化语句;
do {
	循环体语句;
	条件控制语句;
}while(条件判断语句);
  • 执行流程:

    ① 执行初始化语句

    ② 执行循环体语句

    ③ 执行条件控制语句

    ④ 执行条件判断语句,看其结果是true还是false

    如果是false,循环结束

    如果是true,继续执行

    ⑤ 回到②继续

do…while循环案例-打印五次HelloWorld

public class DoWhileDemo {
    public static void main(String[] args) {
        //需求:在控制台输出5次"HelloWorld"
		//for循环实现
		for(int i=1; i<=5; i++) {
			System.out.println("HelloWorld");
		}
		System.out.println("--------");
		//do...while循环实现
		int j = 1;
		do {
			System.out.println("HelloWorld");
			j++;
		}while(j<=5);
    }
}

 三种循环的区别

  • for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)

  • do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)

  • for循环和while的区别

    • 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了

    • 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用

死循环

 格式:

  1. for(;;){}

  2. while(true){}

  3. do {} while(true);

在控制台如果进入死循环可以按ctrl+c停止死循环,当然也可以关闭控制台,但是比较粗暴。

跳转控制语句

break:跳出循环,结束循环

continue:跳过本次循环,继续下次循环(只能在循环中进行)

return:作用类似于continue

循环嵌套

在循环中继续定义循环,整个内循环,就是外循环的一个循环体,内部循环体没有执行完毕,外循环不会继续向下执行,外循环执行一次,内循环执行一圈。

Random(产生随机数)

Random类似Scanner,也是Java提供好的API,内部提供了产生随机数的功能

Random示例-在1-10之间产生随机数

import java.util.Random;

public class Demo1Random {
	/*
		Random : 产生随机数
		
		1. 导包	: import java.util.Random;
				    导包的动作必须出现在类定义的上面

		2. 创建对象 : Random r = new Random();
					上面这个格式里面,r 是变量名,可以变,其他的都不允许变

		3. 获取随机数 : int number = r.nextInt(10);	//获取数据的范围:[0,10) 包括0,不包括10
					上面这个格式里面,number是变量名,可以变,数字10可以变。其他的都不允许变
		
		需求: 产生随机数1-10之间的
	*/
	public static void main(String[] args){
		// 2. 创建对象
		Random r = new Random();
		
		for(int i = 1; i <= 10; i++){
			// 3. 获取随机数
			int num = r.nextInt(10) + 1;		// 1-10
			System.out.println(num);
		}
		
		
		
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今年不养猪只除草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值