Java语言基础Day03(流程控制语句)



提示:以下是本篇文章正文内容,下面案例可供参考

一、流程概述与顺序结构

1.流程概述

在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。

  1. 顺序控制
  2. 分支控制
  3. 循环控制

2.顺序控制

  • 顺序结构流程图:在这里插入图片描述
public class Demo01Sequence {
	public static void main(String[] args) {
		System.out.println("今天天气不错");
		System.out.println("挺风和日丽的");
		System.out.println("我们下午没课");
		System.out.println("这的确挺爽的");
	}
}

二、分支控制

分支控制 if-else 介绍

让程序有选择的的执行,分支控制有三种:

  1. 单分支 if
  2. 双分支 if-else
  3. 多分支 if-else

1.单if语句流程图(单分支)

在这里插入图片描述

public class Demo02If {
   public static void main(String[] args) {
   	System.out.println("今天天气不错,正在压马路……突然发现一个快乐的地方:网吧");
   	int age = 19;
   	if (age >= 18) {
   		System.out.println("进入网吧,开始high!");
   		System.out.println("遇到了一群猪队友,开始骂街。");
   		System.out.println("感觉不爽,结账走人。");
   	}
   	System.out.println("回家吃饭");
   }
}

**

单if语句中,只有一行代码,可以不带{ }

**

2.标准if-else语句流程图(双分支)

在这里插入图片描述

public class Demo03IfElse {
	public static void main(String[] args) {
		int num = 666;
		
		if (num % 2 == 0) { // 如果除以2能够余数为0,说明是偶数
			System.out.println("偶数");
		} else {
			System.out.println("奇数");
		}
	}
}

判断是否是闰年

//判断一个年份是否是闰年,闰年的条件是符合下面二者之一:
//(1)年份能被 4 整除,但不能被 100 整除;(2)能被 400 整除
//
//思路分析
//1. 定义 int year 保存年
//2. 年份能被 4 整除,但不能被 100 整除, // => year % 4 == 0 && year % 100 != 0
//3. 能被 400 整除 => year % 400 == 0
//4. 上面的 2 和 3 是 或的关系
//代码实现
int year = 2028;
if( (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ) {
	System.out.println(year + " 是 闰年");
} else {
	System.out.println(year + " 不是 闰年");
}

3.扩展if-else语句流程图(多分支)

在这里插入图片描述

// x和y的关系满足如下:
// 如果x >= 3,那么y = 2x + 1;
// 如果-1 < x < 3,那么y = 2x;
// 如果x <= -1,那么y = 2x – 1;
public class Demo04IfElseExt {
	public static void main(String[] args) {
		int x = -10;
		int y;
		if (x >= 3) {
			y = 2 * x + 1;
		} else if (-1 < x && x < 3) {
			y = 2 * x;
		} else {
			y = 2 * x - 1;
		}
		System.out.println("结果是:" + y);
	}
}

用if语句实现考试成绩划分

public class Demo05IfElsePractise {
	public static void main(String[] args) {
		int score = 120;
		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 if (score >= 0 && score < 60) {
			System.out.println("不及格");
		} else { // 单独处理边界之外的不合理情况
			System.out.println("数据错误");
		}
	}
}
//课堂练习
import java.util.Scanner;
public class If03 {
//编写一个 main 方法
public static void main(String[] args) {
	/*
	输入保国同志的芝麻信用分:
	如果:
	信用分为 100 分时,输出 信用极好;
	信用分为(80,99]时,输出 信用优秀;
	信用分为[60,80]时,输出 信用一般;
	其它情况 ,输出 信用 不及格
	请从键盘输入保国的芝麻信用分,并加以判断
	假定信用分数为 int
	*/
	Scanner myScanner = new Scanner(System.in);
	//接收用户输入
	System.out.println("请输入信用分(1-100):");
	//请思考:如果小伙伴输入的不是整数,而是 hello.. //==>这里我们后面可以使用异常处理机制搞定
	int grade = myScanner.nextInt();
	//先对输入的信用分,进行一个范围的有效判断 1-100, 否则提示输入错误
	if(grade >=1 && grade <= 100) {
	//因为有 4 种情况,所以使用多分支
		if(grade == 100) {
			System.out.println("信用极好");
		} else if (grade > 80 && grade <= 99) { //信用分为(80,99]时,输出信用优秀;
			System.out.println("信用优秀");
		} else if (grade >= 60 && grade <= 80) {//信用分为[60,80]时,输出信用一般
			System.out.println("信用一般");
		} else {//其它情况 ,输出 信用 不及格
			System.out.println("信用不及格");
		}
	} else {
		System.out.println("信用分需要在 1-100,请重新输入:)");
	}
  }
}

if-else if-else语句中可以没有最后的else语句,但是就没有了程序执行入口。

嵌套分支

在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。建议: 不要超过 3 层 (可读性不好)

if() {
	if() {
		// if-else...
	} else if {
		// if-else
	}
}

4.用if语句替换三元运算符

// 题目:使用三元运算符和标准的if-else语句分别实现:取两个数字当中的最大值
public class Demo06Max {
	public static void main(String[] args) {
		int a = 105;
		int b = 20;
		
		// 首先使用三元运算符
		// int max = a > b ? a : b;
		
		// 使用今天的if语句
		int max;
		if (a > b) {
			max = a;
		} else {
			max = b;
		}
		
		System.out.println("最大值:" + max);
	}
}

5.标准的switch语句

switch语句流程图
在这里插入图片描述

public class Demo07Switch {
	public static void main(String[] args) {
		int num = 10;
		
		switch (num) {
			case 1:
				System.out.println("星期一");
				break;
			case 2:
				System.out.println("星期二");
				break;
			case 3:
				System.out.println("星期三");
				break;
			case 4:
				System.out.println("星期四");
				break;
			case 5:
				System.out.println("星期五");
				break;
			case 6:
				System.out.println("星期六");
				break;
			case 7:
				System.out.println("星期日");
				break;
			default:
				System.out.println("数据不合理");
				break; // 最后一个break语句可以省略,但是强烈推荐不要省略
		}
	}
}

6.穿透的switch语句

switch语句使用的注意事项:

  1. 多个case后面的数值不可以重复。

  2. switch后面小括号当中只能是下列数据类型:
    基本数据类型:byte/short/char/int
    引用数据类型:String字符串、enum枚举

  3. switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。
    “匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”

public class Demo08SwitchNotice {
	public static void main(String[] args) {
		int num = 2;
		switch (num) {
			case 1:
				System.out.println("你好");
				break;
			case 2:
				System.out.println("我好");
				// break;
			case 3:
				System.out.println("大家好");
				break;
			default:
				System.out.println("他好,我也好。");
				break;
		} // switch
	}
}

三、循环结构

1.循环概述与基本组成部分

循环概述

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

基本组成部分

循环结构的基本组成部分,一般可以分成四部分:

  1. 初始化语句:在循环开始最初执行,而且只做唯一一次。
  2. 条件判断:如果成立,则循环继续;如果不成立,则循环退出。
  3. 循环体:重复要做的事情内容,若干行语句。
  4. 步进语句:每次循环之后都要进行的扫尾工作,每次循环结束之后都要执行一次。

2.for循环

for循环原理图:
在这里插入图片描述

public class Demo09For {
	public static void main(String[] args) {
		for (int i = 1; i <= 100; i++) {
			System.out.println("我错啦!原谅我吧!" + i);
		}
		System.out.println("程序停止");
	}
}

3.while循环

while循环有一个标准格式,还有一个扩展格式。

标准格式:

while (条件判断) {
	循环体;
}

扩展格式:

初始化语句;
while (条件判断) {
	循环体;
	步进语句;
}

while循环原理图:
在这里插入图片描述

public class Demo10While {
	public static void main(String[] args) {
		for (int i = 1; i <= 10; i++) {
			System.out.println("我错啦!" + i);
		}
		System.out.println("=================");
		
		int i = 1; // 1. 初始化语句
		while (i <= 10) { // 2. 条件判断
			System.out.println("我错啦!" + i); // 3. 循环体
			i++; // 4. 步进语句
		}
	}
}

4.do-while循环

do-while循环的标准格式:

do {
	循环体;
} while (条件判断);

扩展格式:

初始化语句;
do {
	循环体;
	步进语句;
} while (条件判断);

do-while循环的原理图:
在这里插入图片描述

public class Demo11DoWhile {
	public static void main(String[] args) {
		for (int i = 1; i <= 10; i++) {
			System.out.println("原谅你啦!起来吧!地上怪凉!" + i);
		}
		System.out.println("===============");
		
		int i = 1; // 1. 初始化语句
		do {
			System.out.println("原谅你啦!起来吧!地上怪凉!" + i); // 3. 循环体
			i++; // 4. 步进语句
		} while (i <= 10); // 2. 条件判断
	}
}

5.练习

题目:求出1-100之间的偶数和。

思路:

  1. 既然范围已经确定了是1到100之间,那么我就从1、2、3……一直到100这么多数字一个一个进行检查。
  2. 总共有100个数字,并非所有数字都能用。必须要是偶数才能用,判断(if语句)偶数:num % 2 == 0
  3. 需要一个变量,用来进行累加操作。也就好比是一个存钱罐。
public class Demo12HundredSum {
	public static void main(String[] args) {
		int sum = 0;
		for(int i = 0;i <= 100;i++) {
			if(i % 2 == 0) { //如果是偶数
					sum += i;
			}
		}
		System.out.println("结果是:"+sum);  //2550
	}
}

6.三种循环的区别

  1. 如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。
  2. for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。
public class Demo13LoopDifference {
	public static void main(String[] args) {
		for (int i = 1; i < 0; i++) {
			System.out.println("Hello");
		}
		// System.out.println(i); // 这一行是错误写法!因为变量i定义在for循环小括号内,只有for循环自己才能用。
		System.out.println("================");
		
		int i = 1;
		do {
			System.out.println("World");
			i++;
		} while (i < 0);
		// 现在已经超出了do-while循环的范围,我们仍然可以使用变量i
		System.out.println(i); // 2
	}
}

四、循环控制

1.break语句

  • break关键字的用法有常见的两种:

    可以用在switch语句当中,一旦执行,整个switch语句立刻结束。

    还可以用在循环语句当中,一旦执行,整个循环语句立刻结束。打断循环。

  • 关于循环的选择,有一个小建议:

    凡是次数确定的场景多用for循环;否则多用while循环。

public class Demo14Break {
	public static void main(String[] args) {
		for (int i = 1; i <= 10; i++) {
			// 如果希望从第4次开始,后续全都不要了,就要打断循环
			if (i == 4) { // 如果当前是第4次
				break; // 那么就打断整个循环
			}
			System.out.println("Hello" + i);
		}
	}
}

2.continue语句

另一种循环控制语句是continue关键字。

一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环。

public class Demo15Continue {
	public static void main(String[] args) {
		for (int i = 1; i <= 10; i++) {
			if (i == 4) { // 如果当前是第4层
				continue; // 那么跳过当前次循环,马上开始下一次(第5层)
			}
			System.out.println(i + "层到了。");
		}
	}
}

3.死循环

永远停不下来的循环,叫做死循环。

死循环的标准格式:

while (true) {
	循环体;
}
public class Demo16DeadLoop {
	public static void main(String[] args) {
		while (true) {
			System.out.println("I Love Java!");
		}
		
		// System.out.println("Hello");//永远执行不到,会报错
	}
}

五、嵌套循环

public class Demo17LoopHourAndMinute {
	public static void main(String[] args) {
		for (int hour = 0; hour < 24; hour++) { // 外层控制小时

			for (int minute = 0; minute < 60; minute++) { // 内层控制小时之内的分钟
				System.out.println(hour + "点" + minute + "分");
			}

		}
	}
}

练习

1.输出24小时精确到秒

public class Demo18LoopHourAndMinuteAndSecond {
	
	public static void main(String[] args) {
		
		for(int hour = 0;hour <24; hour++) { //此循环控制小时
			
			for(int minute = 0;minute < 60; minute++) { //此循环控制分钟
				
				for(int second = 0;second < 60;second++) { //此循环控制秒
					
					System.out.println(hour + "小时" + minute + "分钟" + second + "秒");
				}
			}
		}
	}
}

2.计算输出1-100偶数相加的值

public class Demo19WhileHundreSum {
	//1-10偶数相加
	
	public static void main(String[] agrs) {
		
		//for循环
		/* 
		int sum = 0;
		
		for(int i = 1;i <= 100;i++) {
			
			if(i % 2 == 0) {
				
				sum += i;
			}
		}
		
		System.out.println("结果是" + sum);
		*/

		//while循环
		/*
		int sum = 0;//连续储存
		int i = 1;//从1开始
		
		while(i <= 100) {//只要小于100就可以
			
			if(i % 2 == 0) {
				
				sum += i;//如果满足条件就累加
			}
			
			i++;//递增从1-100

		}
		
		System.out.println("结果是" + sum);
		*/
		
		//do-while循环
		int sum = 0;
		int i = 1;
		
		do{
			
			if(i % 2 == 0) {
				
				sum += i;
			}
			
			i++;
		}while(i <= 100);
		
		System.out.println("结果是" + sum);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值