Java的基础之循环

一、复杂的if分支

案例1:

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

分析:1.输入身高体重

​ 2.计算出健康值

​ 3.判断

实现代码如下:

Scanner scan = new Scanner(System.in);
System.out.println("请输入体重(Kg):");
double weight = scan.nextDouble();
System.out.println("请输入身高(m):");
double height = scan.nextDouble();
		
double health = weight/(height*height);
if(health>20 && health<25){
System.out.println("小护士说:\"健康,请保持身材。。。。\"");
案例2:

小西满里惠Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;
或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。
分析:
1.输入成绩
2.判断
总结:if可以判断一个区间 或者 复杂的逻辑判断

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…else

1.语法

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

2.理解:

表达式的结果只能是boolean类型

​ true-执行代码块

​ false-执行else代码块

3.实验:

if(false){

​ System.out.println("…代码块…")

}else{
System.out.println("…else代码块…");
}

​ System.out.println(“if分支以外的代码”);

4.案例

如果椎名空Java考试成绩大于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分支

1.语法

语法:
if(表达式1){
。。。代码块1.。。
}else if{
。。。代码块2.。。
}else if{
。。。代码块n.。。
}

2.理解:

从上往下依次判断表达式,哪个表达式先为true,就执行对应的代码块
如果所有的表达式都为false,就执行else代码块
注意:else{}根据需求可以写可以不写,语法层面不会出错

3.实验:
if(false){
	System.out.println("...代码块1...");
}else if(false){
	System.out.println("...代码块2...");
}else if(false){
	System.out.println("...代码块3...");
}else if(false){
	System.out.println("...代码块4...");
}else{
	System.out.println("...else代码块...");
}
4.案例:

案例一:

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

分析:1先录入身高和体重

​ 2.对健康值进行运算

​ 3.得出结果

代码实现:

System.out.println("请输入体重(Kg):");
double weight = scan.nextDouble();
System.out.println("请输入身高(M):");
double height = scan.nextDouble();
			
double health = weight / (height * height);
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”

分析:1.先录入成绩

​ 2.判断成绩所属范围

​ 3.输出成绩等级

实现原码如下:

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("数据异常");
}

总结:确保数据正确,多重if需要多选一些流程

四、多重嵌套if语句

案例:

公司举行运动会,百米赛跑抛入16s以内的学生有资格参加决赛,根据性别分为男子组、女子组。

分析:

1.首先需要分析成绩是否在16s以内

2.在16s以内的同学中 判断选手的性别

3.输出结果

代码实现:
Scanner scan=new Scanner(System.in);
System.out.println("请输入您的比赛成绩(单位s):");
double s = scan.nextDouble();
if(s>=0&&s<16){
    System.out.println("请输入您的性别:男---1  女 -- 2");
    int sex = scan.nextInt();
    if(sex==1){
        System.out.println("恭喜您进入男子组决赛");
    }else if(sex==2){
        System.out.println("恭喜您进入女子组决赛");
    }else{
        System.out.println("sex error");
    }
}else if(s>=16){
    System.out.print("谢谢参与");
}else{
    System.out.println("data error");
}

五、switch分支

1.语法结构

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

2.理解

表达式计算出来最终的结果值,分别于值1、值2、值n比较,谁相同,就执行对应的代码块
如果都不相同,就执行default代码块,default代码块可写可不写,类似于else{}
break:跳出整个分支语句

3.实验
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;
	}
4.案例

水菜丽参加计算机编程大赛
如果获得第一名,将参加公司组织的1个月马尔代夫旅游
如果获得第二名,将奖励苹果Pro笔记本电脑一部
如果获得第三名,将奖励移动硬盘一个
否则,何老师晚上给水菜丽通宵补课

代码实现:

Scanner scan = new Scanner(System.in);
System.out.println("请输入水菜丽同学的比赛名次:");
String str = scan next(); //输入字符串的表达式
switch(str){
        case"第一名":
        	System.out.println("参加马尔代夫一月游");
        break;
        case"第二名":
        	System.out.println("奖励苹果pro一台");
        break;
        case"第三名":
        	System.out.println("奖励移动硬盘一个");
        break;
        default:
        	System.out.println("通宵补课");
        break;
}

六、深入switch分支

1.switch表达式的值的类型

switch表达式的值可以是byte、short、int、char、枚举(JDK1.5)、String(JDK1.7)

2.case后面接的值不能一样

3.case后面的接的值能一样,但是必须兼容(char ,int)

4.break可以不要 类似else

5.default代码块可以写在中间位置

6default代码块可以省略

案例:

输入年和月,输出当月的天数

分析:1、3、5、7、8、10、12有31天4、6、9、11有30天。

每年的2月,闰年为29天,平年为28天,能被400整除或者能被4整除但不能被100整除的年份即为闰年

代码实现:

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%400==0||year%4==0&&year%100!=0){
            day=29;
        }else{
            day=28;
        }
    break;
}
System.out.println(year+"年"+month+"月的天数为:"+day+"天");
3. if vs switch

表达式的区别:
if:表达式的结果只能是boolean类型
switch:表达式的结果可以是byte、short、int、char、枚举(JDK1.5)、String(JDK1.7)
应用场景区别:
if:判断区间 或 复杂的条件
switch:判断单个值的比较

七、for循环

1.语法:

语法:
for(表达式1;表达式2;表达式3){
…代码块…
}

2.理解:

表达式1:初始化变量
第一次运行for循环时才初始化变量
表达式2:判断条件
判断条件结果必须是boolean类型
true - 执行代码块
false- 跳出循环语句
表达式3:更新变量

3.运行步骤

1.初始化变量
2.判断条件
2.1 true - 执行代码块,再更新变量,重复第2个步骤
2.2 false- 跳出循环语句

4.实验

for(int i = 0;i<5;i++){
System.out.println(“小红真可爱…” + i);
}

5.注意

死循环:应该要避免的错误

代码如下:

for(;;){
			System.out.println("小红真可爱...");
		}
			System.out.println("死循环以外");

1.for循环中声明的变量只能在for循环中使用
2.更新变量 i++ 和 ++i没有区别
3.更新变量不局限于++

6.for循环的变形
for循环的变形1:
		int i = 0;
		for(;i<5;i++){
			System.out.println("小红真可爱..." + i);
		}
		System.out.println(i);
for循环的变形2:
		for(int i = 0;i<5;){
			System.out.println("小红真可爱..." + i);
			i++;
		}
for循环的变形3:
	for(int i = 5;i>0;i--){
		System.out.println("小红真可爱..." + i);
	}	
	
		for(int i = 1;i<10;i+=2){
		System.out.println("小红真可爱..." + i);
	}
7.案例

案例一:循环录入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;
}
System.out.println("总和为:"+sum);

八、嵌套for循环

案例一:

打印三行四列的三角形:

实现代码如下:

for(int i=0;i<3;i++){
    System.out.print("****")}

//方法2:
for(int i = 0;i<3;i++){\\控制行数
    forint j=0;j<4;j++){\\控制列数
        System.out.print("*");
    }
     System.out.println();    
    
}
案例二:

打印三角形

for(int i=1;i<=5;i++){\\控制行数

for(int j=0;j<=i;j++){

​ System.out.print("*");

​ }

​ System.out.println();//换行

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值