Day04-java判断和循环语句


常量

含义:在程序的执行过程中,该量不能发生变化

  1. 使用final修饰的变量成为常量
			final int a = 10;
			System.out.println(a);
  1. 数字字面量
			System.out.println(10+20);
  1. 字面值常量
			System.out.println("用良心做教育,做真实的自己");

转义字符

表示具体特殊意义的字符本身

​ " 代表一个双引号
​ ’ 代表一个单引号
​ \ 代表一个斜杠
​ \n 代表换行
​ \t 代表水平制表

		System.out.println("何老师说:\"用良心做教育,做真实的自己。\"");
		System.out.println("何老师说:\'用良心做教育,做真实的自己。\'");
		System.out.println("何老师说:\\用良心做教育,做真实的自己。\\");
		
		System.out.print("杨晨\n");
		System.out.print("陈希");
		
		System.out.println("3*3=9\t3*4=12\t3*5=15");
		System.out.println("4*3=12\t4*4=16\t4*5=20");

Java的执行语句

  1. 顺序执行:方法中的代码从上往下执行
  2. 分支执行:依据不同的条件去处理不同功能的代码
    2.1 if
    2.2 switch
  3. 循环执行:条件成立会重复性的执行某个功能
    3.1 for
    3.2 while
    3.3 do-while
  4. 特殊的流程控制语句
    4.1 break
    4.2 continue
    4.3 return
    4.4 lable

判断语句

if分支

简单的if分支

语法结构:

​				if(表达式){

​						...代码块..

​				}

理解:

  	表达式的结果一定是boolean类型
  		true - 执行代码块
  		false - 跳出if分支

做实验:

	if(true){
		System.out.println("你好呀!");
	}

案列:键盘输入成绩,大于98分,奖励法拉利玩具车

	Scanner input=new Scanner(System.in);
	double javaScore = input.nextDouble();
	
	if(javaScore>98){
		System.out.println("奖励一辆法拉利");
	}

案列:计算 健康值=体重(kg)/身高(m)的平方 20~25健康

	Scanner input = new Scanner(System.in);
	System.out.println("请输入身高:");
	double height = input.nextDouble();
	System.out.println("请输入体重:");	
	double weight = input.nextDouble();
	double zhi = weight/(height*height);
	if(zhi>=20&&zhi<=25){
	System.out.println("健康");
	}
	
	System.out.println("请输入java成绩:");
	double javaScore= input.nextDouble();
	System.out.println("请输入音乐成绩");
	double musicScore= input.nextDouble();
	
	if((javaScore>=98&&musicScore>=80)||(javaScore==100&&musicScore>70)){
		System.out.println("奖励法拉利一辆");
	}

案列:键盘输入成绩,成绩大于98分奖励劳斯莱斯一辆,否则罚抄代码

	Scanner input=new Scanner(System.in);
	System.out.println("请输入成绩:");
	double javaScore=input.nextDouble();
	if(javaScore>98){
		System.out.println("奖励劳斯莱斯一辆");
	}else{
		System.out.println("罚抄代码");
	}

复杂条件的if分支

案例一: 人类的健康值在20-25的数值内为健康
(健康值算法为:体重(Kg) / 身高(米)的平方)

			//1.输入体重和身高
			Scanner scan = new Scanner(System.in);
			System.out.println("请输入体重(Kg):");
			double weight = scan.nextDouble();
			System.out.println("请输入身高(m):");
			double height = scan.nextDouble();
			
			//2.计算健康值
			double health = weight/(height*height);
			
			//3.判断
			if(health >= 20 && health <=25){
				System.out.println("小护士说:\"身体健康,保持现有生活规律\"");
			}

案例二:小西Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。

			Scanner scan = new Scanner(System.in);
	
			System.out.println("请输入Java成绩:");
			double javaScore = scan.nextDouble();
			System.out.println("请输入音乐成绩:");
			double musicScore = scan.nextDouble();
			
			if((javaScore>98&&musicScore>80) || (javaScore==100&&musicScore>70)){
				System.out.println("奖励小西法拉利玩具赛车一辆");
			}

总结:if可以判断数值的区间和复杂的条件

if…else…

语法规则:

  		if(表达式){
  			...代码块...
  		}else{
  			...else代码块...
  		}

理解:

  		表达式的值必须是boolean
  			true - 执行代码块
  			false- 执行else代码块

做实验:

			if(false){
				System.out.println("代码块");
			}else{
				System.out.println("else代码块");
			}
			
			System.out.println("if分支以外的代码");

案列:如果京香考试成绩大于98分,老师就奖励他一个劳斯莱斯,否则老师就罚他进行编码

			Scanner scan = new Scanner(System.in);
			System.out.println("请输入Java成绩:");
			double javaScore = scan.nextDouble();
			
			if(javaScore>98){
				System.out.println("奖励京香劳斯莱斯玩具赛车一辆");
			}else{
				System.out.println("老师给京香通宵补课");
			}

总结:if…else…二选一

if…else if …

语法结构:

if(表达式){
	//...代码块1...
}else if(表达式){
	//...代码块2...
]else if(表达式){
	//..代码块n...
}else{
	//...else代码块...
}

理解:

		表达式的结果必须是boolean值
		从上往下判断,哪个表达式先成立(true),就执行相应的代码块

注意:

		else{...else代码块...}根据需求可写可不写

做实验:

			if(false){
				System.out.println("...代码块1...");
			}else if(false){
				System.out.println("...代码块2...");
			}else if(false){
				System.out.println("...代码块n...");
			}else{
				System.out.println("...else代码块...");
			}
			
			System.out.println("if分支以外的代码");

案例一:人类的健康值在15-20的数值内为偏瘦20-25的数值内为健康25-30的数值内为偏胖健康值算法为:体重(Kg) / 身高(米)的平方)

			//1.输入体重和身高
			Scanner scan = new Scanner(System.in);
			System.out.println("请输入体重(Kg):");
			double weight = scan.nextDouble();
			System.out.println("请输入身高(m):");
			double height = scan.nextDouble();
			//2.计算健康值
			double health = weight/(height*height);
			
			//3.判断
			if(health>=15 && health<20){
				System.out.println("小护士说:\"偏瘦,多喝啤酒,多吃垃圾食品,多熬夜\"");
			}else if(health>=20 && health<25){
				System.out.println("小护士说:\"身体健康,保持现有生活规律\"");
			}else if(health>=25 && health<30){
				System.out.println("小护士说:\"偏胖,多运动,嘿嘿嘿~~~\"");
			}else{
				System.out.println("小护士说:\"数据异常,请到***医院详细检查\"");
			}

案例二:通过键盘录入学生成绩如果在90-100之间,则打印“A”,否则如果在80-90之间,则打印“B”,否则如果在70-80之间,则打印“C”否则如果在60-70之间,则打印“D”否则打印“E”

			Scanner scan = new Scanner(System.in);
		
			System.out.println("请输入成绩:");
			double score = scan.nextDouble();
			
			if(score >= 90 && score<=100){
				System.out.println("A");
			}else if(score >= 80 && score<90){
				System.out.println("B");
			}else if(score >= 70 && score<80){
				System.out.println("C");
			}else if(score >= 60 && score<70){
				System.out.println("D");
			}else if(score >= 0 && score<60){
				System.out.println("E");
			}else{
				System.out.println("成绩异常");
			}

案例:举行运动会,百米赛跑跑入16秒内的学生有资格进决赛,
根据性别分别进入男子组和女子组。

			Scanner scan = new Scanner(System.in);
	
			System.out.println("请输入比赛成绩:");
			double score = scan.nextDouble();
			
			if(score >= 0 && score < 16){
				System.out.println("请输入性别:");
				String sex = scan.next();
				if(sex.equals("男")){//判断两个字符串内容是否相等
					System.out.println("恭喜,进入到男子组决赛");
				}else if(sex.equals("女")){//判断两个字符串内容是否相等
					System.out.println("恭喜,进入到女子组决赛");
				}else{
					System.out.println("性别异常");
				}
				
			}else{
				System.out.println("重在参与");
			}

总结:

	if(){} :单纯判断某个条件
	if...else...:二选一
	if...else if...:多选一
	if可以判断单个值,也可以判断区间,也可以判断复杂的条件

switch分支

语法结构:

	switch(表达式){
		case 值1:
			...代码块1...
		break;
		case 值2:
			...代码块2...
		break;
		case 值n:
			...代码块n...
		break;
		default:
			...default代码块...
		break;
	}

理解:

	表达式的结果:byte、short、int、char、字符串、枚举
	分别给值1、值2、值n做比较,哪个相等就执行对应的代码块
	如果都不相等,执行default代码块
	break的作用是跳出整个分支语句

注意:

	default:
		...default代码块...
	break;
	default代码块根据需求可写可不写

做实验:

			switch(1000){
				case 10:
					System.out.println("10");
				break;
				case 50:
					System.out.println("50");
				break;
				case 100:
					System.out.println("100");
				break;
				default:
					System.out.println("default代码块");
				break;
			}
			System.out.println("switch分支以外的代码");

案例:北条参加计算机编程大赛
如果获得第一名,将参加1个月马尔代夫旅游
如果获得第二名,将奖励苹果Pro笔记本电脑一部
如果获得第三名,将奖励移动硬盘一个
否则,老师晚上给北条通宵补课

			Scanner scan = new Scanner(System.in);
			System.out.println("请输入北条麻衣的比赛名次:");
			String str = scan.next();
			
			switch(str){
				case "第一名":
					System.out.println("-参加1个月马尔代夫旅游");
				break;
				case "第二名":
					System.out.println("奖励苹果Pro笔记本电脑一部");
				break;
				case "第三名":
					System.out.println("奖励移动硬盘一个");
				break;
				default:
					System.out.println("老师晚上给北条通宵补课");
				break;
			}

面试题:

		case的值可以相同吗? 不允许相同
		default可以省略吗? 可以
		break可以省略吗?可以
		default的位置一定要在最后吗? 不一定,最好放在最后可读性会高一些
		表达式值的类型可以是什么? byte、short、int、char、字符串(JDK1.7)、枚举(JDK1.5)

案例:输入年和月,输出当月的天数

			Scanner scan = new Scanner(System.in);
			System.out.println("请输入年:");
			int year = scan.nextInt();
			System.out.println("请输入月:");
			int month = scan.nextInt();
			int day = 0;//当月天数
			switch(month){
				case 1:case 3:case 5:case 7:case 8:case 10:case 12:
					day = 31;
				break;
				case 4:case 6:case 9:case 11:
					day = 30;
				break;
				case 2:
					if((year%4==0&&year%100!=0) || (year%400==0)){//闰年
						day = 29;
					}else{//平年
						day = 28;
					}
				break;
			}
			
			System.out.println(year + "年" + month + "月的天数为:" + day + "天");

if vs switch

		表达式的区别:
			if的表达式:boolean
			switch的表达式: byte、short、int、char、字符(JDK1.7)、					枚举(JDK1.5)

应用场景的区别:

			if:判断单个值、判断区间、判断复杂条件
			switch:判断单个值

循环语句

for循环

语法结构:

		for(表达式1;表达式2;表达式3){
			...代码块...
		}

理解:

		表达式1:初始化变量
		表达式2:判断条件
		表达式3:更新变量

执行流程:

		1.初始化变量
		2.判断条件,结果必须是boolean类型
			true-执行代码块,并且更新变量,重复第2步
			false-跳出整个循环语句

做实验:

			for(int i = 0;i<5;i++){
					System.out.println("键盘敲烂,月薪过万!!!");
			}

for循环变形记:

  1. 代码块执行完毕后再更新变量,i++和++i效果是一样的
  2. for循环中定义的变量他的作用域就在for循环内
  3. 更新变量没有局限性,可以自增也可以自减
   			int k = 0;
   			for(;k<5;){
   				System.out.println("键盘敲烂,月薪过万!!!");
   				k++;
   			}
   			System.out.println(i);//5
   			for(int i = 1;i<=5;i++){
   				System.out.println(i);
   			}	
   			for(int i = 5;i>=1;i--){
   				System.out.println(i);
   			}
   			for(int i = 1;i<=9;i+=2){
   				System.out.println(i);
   			}

死循环:
注意:死循环是应该要积极避免的

			for(;;){
				System.out.println("死循环");
			}
			System.out.println("xxxxx");

案例1:循环录入5次int类型的数字,输出总和

			Scanner scan = new Scanner(System.in);
			int sum = 0;
			for(int i = 1;i<=5;i++){
				System.out.println("请输入第" + i + "个数字:");
				int num = scan.nextInt();
				sum += num;
				//sum = (int)(sum+num);
			}
			System.out.println("总和为:" + sum);

案例2:循环录入麻生希同学的5门课成绩,计算平均分

			Scanner scan = new Scanner(System.in);
			int sum = 0;
			for(int i = 1;i<=5;i++){
				System.out.println("请输入第" + i + "门成绩:");
				int num = scan.nextInt();
				sum += num;
			}
			System.out.println("平均分为:" + (sum/5));

案例3:循环录入5次int类型的数字,输出最大值

			Scanner scan = new Scanner(System.in);
			
			System.out.println("请输入第1个数字:");
			int max = scan.nextInt();
			
			for(int i = 2;i<=5;i++){
				System.out.println("请输入第" + i + "个数字:");
				int num = scan.nextInt();
				if(max < num){
					max = num;
				}
			}
			System.out.println("最大值为:" + max);	

for循环嵌套

案例1:打印以下图形

				//****
				//****
				//****
				for(int i = 0;i<3;i++){//控制行数
					for(int j = 0;j<4;j++){//控制列数
						System.out.print("*");
					}
					System.out.println();
				}

案例2:打印以下图形

				//*		i=0
				//**	i=1
				//***	i=2
				//****	i=3
				//*****	i=4
				for(int i = 0;i<5;i++){
					for(int j = 0;j<=i;j++){
						System.out.print("*");
					}
					System.out.println();
				}

案例3:打印以下图形

			//***** i = 0
			//****  i = 1
			//***	i = 2	
			//**    i = 3
			//*     i = 4
			for(int i = 0;i<5;i++){
				for(int j = 0;j<5-i;j++){
					System.out.print("*");
				}
				System.out.println();
			}

案例4:打印以下图形

			//***** 	i = 0
			 //****  	i = 1
			  //***		i = 2	
			   //**   	i = 3
			    //*   	i = 4
			for(int i = 0;i<5;i++){
				//打印空格
				for(int k = 0;k<i;k++){
					System.out.print(" ");
				}
				//打印星星
				for(int j = 0;j<5-i;j++){
					System.out.print("*");
				}
				System.out.println();
			}	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Helloword先生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值