day04基础4-- 分支结构、循环结构、for嵌套循环

1、分支结构

1.1  if...else if

练习1:测试商品打折案例

package cn.tedu.basic;
import java.util.Scanner;
/*测试商品打折案例*/
//需求:接收用户输入的商品原价,满10000打五折,满5000打八折,满2000打九折,低于2000原价
public class TestDiscount {
     //0.创建程序入口main函数
	public static void main(String[] args) {
		//1.提示并接收用户输入原价
		System.out.println("请输入商品原价:");
		double price = new Scanner(System.in).nextDouble();
		//2.定义一个变量用来保存实付的结果
		double count = price;//注意count的初始值是商品的原价
		//3.计算打折后的价格
		if(price>=10000) {//10000以上打五折
			count = price*0.5;
		}else if (price >=5000) {
			count = price*0.8;
		}else if (price>=2000) {
			count = price*0.9;
		}
		System.out.println("实付金额为:"+count);
	}
}

练习2:统计学生分数的档位

package cn.tedu.basic;

import java.util.Scanner;

/*
*@author 学生:Q
*@vesion :java1.8.131
*创建时间:2021年6月3日 上午11:48:18
*/
/*本类用于判断班里10个学员分数的档位*/
public class TestScore {
	//0.创建程序入口main函数
	public static void main(String[] args) {
		//1.提示并接收输入的学员分数
		System.out.println("输入你的分数:");
		int score = new Scanner(System.in).nextInt();
		/*为了增强程序的健壮性,若用户输入的数据不符合规则,就结束*/
		int i =1;
		int great = 0,best = 0,better = 0,good = 0,bad = 0;		
		while(i<=10) {//班里10个人,判断每个人的成绩,完成后退出
		if(score<0 || score>100) {
			System.out.println("输入非法,重新输入:");
			score = new Scanner(System.in).nextInt();			
		}
		//2.判断分数分数的段位,并输出结果
		if(score>=90) {//大于90优秀
			System.out.println("优秀");
			great++;
		}else if (score>=80 ) {//[80,90)良好
			
			System.out.println("良好");
			best++;
		}else if(score >=70) {//[70,80)较好
			System.out.println("较好");
			better++;
		}else if(score>=60) {//[60,70)及格
			System.out.println("及格");
			good++;
		}else {//小于60不及格
			System.out.println("不及格");
			bad++;
		}i++;
		if(i>10) {
			System.out.println("结束");
			break;//break跳出循环,如果用return,整个程序就结束了且不输出结果
		}
		System.out.println("输入下一个成绩:");
		score = new Scanner(System.in).nextInt();
		
	  }
		System.out.println("10人中优秀的有:"+great+"个,"+"良好的有:"+best+"个,"+"较好的有:"+better+"个,"+
	  "及格的有:"+good+"个,"+"不及格的有:"+bad+"个,");
	}
}

1.2  switch...case

1).变量a的类型只支持byte、short、int、char、String类型
2).变量a的值会依次与case后的值作比较,若不加break ,会穿透所有case的输出值,包括                 default输出值
3).switch 语句可以拥有多个 case 语句,每个 case 后面跟一个要比较的值和冒号,且此值的数据类型必须与变量的数据类型一致
4).设置了default,当所有case分支都没有匹配到,就执行default下的输出值
5).break与default是可选项,根据具体业务需求决定是否添加

6).作用:判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
      当一个case成立,从这个case向后穿透所有case,包括default,直到程序结束
      该结构会有穿透现象,如果想每个分支都停止,就需要在每个分支后加break;

格式:

练习:每周要做的活动

package cn.tedu.basic;

import java.util.Scanner;
/*本类用于练习switch结构2*/
public class TestSwitch2 {
	public static void main(String[] args) {
		System.out.println("请确定今天是周几:");
		//String d= "周四";
		String d = new Scanner(System.in).nextLine();
		switch(d) {
		    case "周一":System.out.println("周一边晨跑边敲代码");break;
		    case "周二":System.out.println("周二边俯卧撑边敲代码");break;
		    case "周三":System.out.println("周三边仰卧起坐边敲代码");break;
		    case "周四":System.out.println("周四敲代码");break;
		    case "周五":System.out.println("周五边深蹲边敲代码");break;
		    case "周六":System.out.println("周六边引体向上边敲代码");break;
		    case "周日":System.out.println("周日边跳绳边敲代码");break;
		    default:System.out.println("去睡觉");
		}		
	}

}

2、循环结构

2.1 for循环

格式:

1、for循环创建思路和每个条件的功能:
 1).开始条件:定义控制循环的循环变量,并给循环变量初始化
 2).循环条件:限制循环变量的范围,控制循环何时结束
 3).更改条件:控制循环变量的变化
2、for循环创建思路:从哪开始,到哪结束 ,如何变化
     循环的执行情况是由三个条件共同控制的
3、循环一共执行几次怎么判断?
 答:看循环变量可以取到的值一共有几个,有几个就执行几次

练习:打印100次slogon/打印0到10/打印10到0/打印8,88,888,8888

package cn.tedu.basic;
/*本类用于测试循环结构中的for循环*/
public class TestFor {
	public static void main(String[] args) {
		//需求:打印四次自己的宣言
		/**格式:for(开始条件; 循环条件; 更改条件){符合循环条件执行的循环体}*/
		for(int i = 1; i<=4;i++);{
			System.out.println("又不是没那条件,干就完了");			
		}
		//需求:打印1-10
		//for循环从哪开始:1,到哪里结束:10,如何变化:++
		for(int j =1; j<=10;j++) {
			System.out.println(j);
		}
		//需求:打印10-1
		//for循环从哪开始:10,到哪里结束:1,如何变化:--
		for(int k = 10;k>=1;k--) {
			System.out.println(k);
		}
		//需求:8,88,888,8888
		for(int i = 8;i<=8888;i=i*10+8) {
		System.out.print(i+",");
	}
  }
}

练习2:求1-100的总和/偶数的和/偶数的个数

package cn.tedu.basic;

public class TestFor2 {
	public static void main(String[] args) {
		m1();
		m2();
		m3();
	}
	/*需求:求出1-100以内的所有偶数的个数*/
	private static void m3() {
		//1.定义变量用来保存偶数的个数	
		int count = 0;
		  //2.创建循环,依次循环1-100范围内的数
		for(int i = 1;i<=100;i++) {
			//3.过滤出来要统计个数的偶数
			if(i%2 == 0) {//说明这是一个偶数
				//4.对偶数的个数进行累计
				count=count+1;//count++
			}			
		}//5.打印最终结果	
		System.out.println(count);
	}
	/*需求:求出1-100以内的所有偶数的和*///开始条件:2结束条件:100 改变条件:
	private static void m2() {
		//1.定义变量用来保存最终求和的结果
		int sum = 0;
		//2.创建循环,依次循环1-100范围内的数
		for(int i = 1;i<=100;i++) {
			//3.过滤出来需要累加的偶数	
			if(i%2 == 0) {
		//  if(i%2 ==1 )过滤奇数
				sum = sum +i;				
			}			
		}//4.打印最终计数结果
		System.out.println(sum);
		
	}
     /*需求:求出1-100以内的所有数的和*/
	private static void m1() {
		//1.定义一个变量用来保存求和的结果
		int count = 0;
		//2.创建循环,依次循环1-100内的数
		for(int i = 1;i<=100;i++) {
			//3.将本轮循环到的数字累加到最终的 结果中
			count = count +i;
		}System.out.println(count);
		
	}
	

}

2.2while循环/do...while循环

while格式:

do...while循环格式:

注意:死循环while(true){执行体1,执行体2...,break;},死循环一定要设置出口break

练习:猜数字案例:利用了调用方法和if-else if结构,包含while循环和do...while循环

package cn.tedu.review;

import java.util.Random;
import java.util.Scanner;

/*本类练习while循环和do-while循环*/
//需求:产生一个随机数,和用户一直输入的数字作比较直到用户猜对
public class TestWhile_DoWhile {
	//1-1.创建程序入口函数main()方法
    public static void main(String[] args) {
		int r = createNum();//1-2.调用生成随机数的方法
		//System.out.println(r);
		
		guessNumber1(r);//使用while循环猜数字
		guessNumber2(r);//使用do-while循环猜数字
	}
    //创建猜数字的方法2,练习do-while
    private static void guessNumber2(int r) {
		do {
			 System.out.println("猜猜看:");
    		 int input  = new Scanner(System.in).nextInt();
    		 //3.判断用户是否猜对(用猜的数字和随机数作比较)
    		 if(input>r) {
    			 System.out.println("猜大了!");
    		 }else if(input<r) {
    			 System.out.println("猜小了!");
    		 }else if(input == r) {
    			 System.out.println("猜对了!");
    			 //猜对了就结束后面所有的轮数,利用break跳出循环
    			 break;//注意:死循环一定要设置程序出口
    		 }    		 
		}while(true);
		
	}
	//创建猜数字的方法,练习while循环
     private static void guessNumber1(int r) {
		//1.写一个死循环
    	 while(true) {//死循环,注意:需要设置程序的出口
    		//2.提示并接收用户猜的数字
    		 System.out.println("猜猜看:");
    		 int input  = new Scanner(System.in).nextInt();
    		 //3.判断用户是否猜对(用猜的数字和随机数作比较)
    		 if(input>r) {
    			 System.out.println("猜大了!");
    		 }else if(input<r) {
    			 System.out.println("猜小了!");
    		 }else if(input == r) {
    			 System.out.println("猜对了!");
    			 //猜对了就结束后面所有的轮数,利用break跳出循环
    			 break;//注意:死循环一定要设置程序出口
    		 }    		 
    	 }		
	}
	//创建一个让程序产生随机数的方法
	private static int createNum() {
	//1-3.java.util.Random();注意导包,接收随机生成的数字
		//参数100是自定义,表示生成随机数的范围时[0,100)包含0不包含100以内的数字
		int random = new Random().nextInt(100);
		return random;
	}

}

2.3三种循环的区别和应用场景:

  1. for:知道循环次数
  2. while/do while:当循环次数不确定时
  3. while:先判断,不符合规则,不执行代码
  4. do while:代码最少被执行一次,再去判断,符合规则,再次执行代码
  5. 循环之间都可以互相替代,但是一般最好选择合适的循环结构来完成代码

3.嵌套循环

for循环嵌套的特点:

  • 1.每外层循环执行一次,内层循环要执行多次
  • 2.外层循环控制行数,内层循环控制列数

练习:99乘法表

package cn.tedu.review;

public class TestFor99Excel {
	public static void main(String[] args) {
		//需求:99乘法表
		for(int i =1;i<=9;i++) {//外-行
			for(int j =1;j<=i;j++) {//内-列
				System.out.print(j+"*"+i+"="+(i*j)+"\t ");//"\t"表示制表符,控制格式整齐度
			}
			System.out.println();//换行
		}
	}

}

4.break,continue和retrun的区别

1)continue:跳过本次循环,继续执行下一次循环

2)break:    跳出整个循环,往后不在执行此循环

3)return:    跳出整个循环,以及整个程序,停止运行

拓展: 多层嵌套for循环如何跳到最外层

不加任何代码,最里层的break,只能跳出最内层的循环, 如果想要跳出最外面的,就要新增一个标记.
在想要跳出循环的地方加标记,然后break标记.

同理换成continue 标记; 效果一样.

    /**
     * 测试多重for循环 break
     */
    public static void forTest() {
        int a = 3;
        tab: for (int i = 0; i < a; i++) {
            System.out.println("我是i...." + i);
            for (int j = 0; j < a; j++) {
                System.out.println("我是j...." + j);
                if (j == 1) {
                    break tab;
                }
            }

        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值