switch语句及三种循环语句

java 专栏收录该内容
4 篇文章 0 订阅

switch语句

语句格式

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

执行流程

  • 首先计算出表达式的值

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

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

    代码案例1:

    /*
       switch 语句
       格式:
       switch(表达式){
    	    case1:  
    			语句体1;
    			break;
            case2  
    			语句体2;
    			break;
            ....		
    		defualt:
    		语句体3;
    		break;   
       }   
      案例:
      输入一个月份确认是哪个季节?
      分析:
      1、涉及键盘输入所以需要导包
      2、创建对象
      3、接受对象
         1、2、12  为冬季
    	 3、4、5   为春季
    	 6、7、8   为夏季
    	 9、10、11 为秋季
    */
    //1、导包
    import java.util.Scanner;
    public class five{
    	public static void main(String[] args){
    		//创建对象
    		Scanner sc = new Scanner(System.in);
    		//接受对象
    		System.out.println("请输入一个月份:");
    		int mouth = sc.nextInt();
    		//因涉及选择所以用switch语句
    		switch(mouth){
    			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;
    			case 8:
    			System.out.println("夏季");
    			break;
    			case 9:
    			System.out.println("秋季");
    			break;
    			case 10:
    			System.out.println("秋季");
    			break;
    			case 11:
    			System.out.println("秋季");
    			break;
    			case 12:
    			System.out.println("冬季");
    			break;
    			default	:
                System.out.println("你输入的有误");
    			break;			
    		}
    		
    	
    	}
    }
    

    代码案例2:

    对上面的代码进行优化

    //1、导包
    import java.util.Scanner;
    public class five{
    	public static void main(String[] args){
    		//创建对象
    		Scanner sc = new Scanner(System.in);
    		//接受对象
    		System.out.println("请输入一个月份:");
    		int mouth = sc.nextInt();
    		//因涉及选择所以用switch语句
    		switch(mouth){
    			case 3:
    			case 4:
    			case 5:
    			System.out.println("春季");
    			break;
    			case 6:
    			case 7:
    			case 8:
    			System.out.println("夏季");
    			break;
    			case 9:
    			case 10:
    			case 11:
    			System.out.println("秋季");
    			break;
    			case 12:
    			case 1:
    			case 2:
    			System.out.println("冬季");
    			break;
    			default	:
                System.out.println("你输入的有误");
    			break;			
    		}
    	}
    }
    

for循环

语句格式

for(初始化语句;条件判断语句;条件控制语句){
    循环语句体;
}

执行流程

①执行初始化语句

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

​ 如果是false,循环结束

​ 如果是true,继续执行

③执行循环体语句

④执行条件控制语句

⑤回到②继续

代码案例

1、输出数据

需求:在控制台输出1-5和5-1的数据

/*
   for循环语句
    
	for(初始化语句;条件判断语句;条件控制语句){
		循环语句;
	}
	
	 需求:在控制台输出1-5和5-1的数据 
	 分析:
	 用fou循环语句实现1-5和5-1的数据输出 
*/
public class five{
	public static void main(String[]args){
		
		for(int i =1;i <= 5; i++){
			System.out.println(i);
		}
	
		for(int j =5;j >= 1; j--){
			System.out.println(j);
		}	
	}
}

2、输出数据求和

需求:求1-5之间的数据和,并把求和结果在控制台输出

/*
   for循环语句
    
	for(初始化语句;条件判断语句;条件控制语句){
		循环语句;
	}
	
	 需求:求1-5之间的数据和,并把求和结果在控制台输出 
	 分析:
	 求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0  
*/
public class five{
	public static void main(String[]args){
		//求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
		int num = 0;
		for(int i = 1;i <= 5; i++){
			num +=i;	
		}
		System.out.println("数据的和为:" + num);
		}	
	}

3、求偶数和

需求:求1-100之间的偶数和,并把求和结果在控制台输出

/*
   for循环语句
    
	for(初始化语句;条件判断语句;条件控制语句){
		循环语句;
	}
	
	 需求:求1-100之间的偶数和,并把求和结果在控制台输出
	 分析:
	 //求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0  
*/
public class five{
	public static void main(String[]args){
		int num = 0;
		for(int i = 1; i <=100; i++){
			//因为要求1-100之间的偶数和
			if(i%2==0);{
				num += i;	
			}	
		}
		System.out.println("数据的偶数和为:" + num);
		}	
	}

4、水仙花

需求:在控制台输出所有的“水仙花数”

解释:什么是水仙花数?

水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数

例如`153 3 * 3 * 3 + 5 * 5 * 5 + 1 * 1 * 1 = 153‘

  1. 获取所有的三位数,准备进行筛选,最小的三位数为100,最大的三位数为999,使用for循环获取

  2. 获取每一个三位数的个位,十位,百位,做if语句判断是否是水仙花数

    /*
       for循环语句
        
    	for(初始化语句;条件判断语句;条件控制语句){
    		循环语句;
    	}
    	
    	 需求:在控制台输出所有的“水仙花数” 
    	 分析:
    	 1. 获取所有的三位数,准备进行筛选,最小的三位数为100,最大的三位数为999,使用for循环获取
    	 2. 获取每一个三位数的个位,十位,百位,做if语句判断是否是水仙花数 
    */
    public class five{
    	public static void main(String[]args){
    		//输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束
    		for(int num = 100; num <=999; num++){
    	   //获取每一个三位数的个位,十位,百位,做if语句判断是否是水仙花数
    	   int ge=num%10;
    	   int shi=num/10%10;
    	   int bai=num/10/10%10;
    	   //判定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等
    	   if(ge*ge*ge + shi*shi*shi + bai*bai*bai == num){
    		   //输出满足条件的数字就是水仙花数
    		   System.out.println(num);
    				}	
    			}		
    		}		
    	}	
    

while循环

语句格式

初始化语句;
while (条件判断语句){
    循环语句;
    条件控制语句;    
}

执行流程

①执行初始化语句

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

​ 如果是false,循环结束

​ 如果是true,继续执行

③执行循环体语句

④执行条件控制语句

⑤回到②继续

代码案例

需求:在控制台输出5次"HelloWorld"

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

while循环练习:纸和珠穆朗玛峰

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

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

}

while循环练习:皇帝赏农民

需求:皇帝赏农民
​ 古代有一个农民,救了皇帝的儿子。皇帝大喜,奖赏农民!黄金万两、良田千亩。
​ 农民说:第一天给我1块钱,第二天给我2块钱,第三天给我4块钱~~~~ 连续给我一个月!

/*
*  需求:皇帝赏农民
		古代有一个农民,救了皇帝的儿子。皇帝大喜,奖赏农民!黄金万两、良田千亩。
		农民说:第一天给我1块钱,第二天给我2块钱,第三天给我4块钱~~~~ 连续给我一个月!

* */
public class Demo04 {
    public static void main(String[] args) {
        //因为要求钱数的总和所以要定义一个数值,初始为0
        int monery = 0;

        //定义一个钱的变量,初始为1
        int i = 1;
        //第一天给我1块钱,第二天给我2块钱,第三天给我4块钱;涉及循环,j*=2
        for (int j = 1; j <=30; j++) {
            i *= 2;
            monery += i;
            System.out.println("每天给的钱为:" + j);
        }
         System.out.println("连续给一个月的钱为:" + monery);
    }
}

do-while循环

定义格式

初始化语句
 do{
    循环语句;
    条件控制语句;
   }while(条件判断语句);
    

执行流程

  • ①执行初始化语句
  • ②执行循环体语句
  • ③执行条件控制语句
  • ④执行条件判断语句,如果为true
  • ②->③->④ 直到条件为false结束

执行特点

  • do-while循环无论条件是否满足,都至少执行一遍循环体

代码案例

public class Demo05 {
    public static void main(String[] args) {
        int i = 1;
        do {
            System.out.println("HelloWorld");
            i++;
        }while(i <= 5);
    }
}

do-while循环和for、while循环的区别

1、do-while循环需要执行一遍循环体

2、for、while循环先进行判断,再执行循环

for循环和while循环的区别

当循环的次数明确的时候,推荐使用for循环

代码案例

需求:打印1~100之间的所有的8的倍数的数字

//需求:打印1~100之间的所有的8的倍数的数字
public class Demo06 {
    public static void main(String[] args) {
        for (int i = 1; i <= 100; i++){
            //因为涉及打印1~100之间的所有的8的倍数的数字需要判定是否属于;需要加if语句
           if (i%8==0){
               System.out.println(i);
           }
        }
    }
}

当循环的次数不明确的时候,推荐使用while循环

需求:通过键盘不断的接收数字并打印。直到输入的数字是886则停止


//需求:通过键盘不断的接收数字并打印。直到输入的数字是886则停止
public class Demo07 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("请输入你想输入的数值:");
            int  num = sc.nextInt();

        if (num == 886){
            System.out.println("你输入的值为:" + num);
         break;
        }
            System.out.println("你输入的值为:" + num);
        }
    }
}

循环嵌套

跳转控制语句

  • break关键字

    • 作用:可以结束循环和switch语句
    • 使用场景:可以用在循环中,也可以用在switch语句中
  • continue关键字

    • 作用:结束本次循环,继续下一次循环
    • 使用场景:只能用在循环中

    案例代码

    需求:
    ​ 1.我想在控制台输出2次我爱学习Java break
    ​ 2.我想在控制台输出7次我爱学习Java continue
    ​ 3.我想在控制台输出13次我爱学习Java

    /*
    * 需求:
    		1.我想在控制台输出2次我爱学习Java     break
    		2.我想在控制台输出7次我爱学习Java     continue
    		3.我想在控制台输出13次我爱学习Java
    * */
    public class Demo08 {
        public static void main(String[] args) {
            for (int i = 1; i <= 10; i++){
              if (i%3 != 0){
                  System.out.println("我爱学习");
                  //break;
                  //continue;
              }
            }
            System.out.println("我爱学习");
        }
    }
    
    

循环嵌套

执行特点:外循环执行一次,内循环执行一圈

示例代码

for(int hour=0; hour<24; hour++) {	// hour = 1
			for(int minute=0; minute<60; minute++) {	// minute = 60
				System.out.println(hour + "时" + minute + "分");
				// 0时0分
				// 0时1分
				// 0时2分
				// 0时59分
			}
			System.out.println("--------");
		}

循环嵌套练习:输出指定*型

/*
* 需求1:控制台输出:
	****
	****
	****
	****
	输出4行4列的*

	外循环控制的是行数,内循环控制的是列数

	需求2:控制台输出:
	*
	**
	***
	****

	作业题:输出99乘法表
	1*1=1
	1*2=2 2*2=4
	1*3=3 2*3=6 3*3=9
	1*4=4 2*4=8 3*4=12 4*4=16
	...
* */
public class Demo09 {
    public static void main(String[] args) {
        for (int i = 1; i <= 4; i++) {
            for (int j = 1; j <= 4; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

        System.out.println("--------------------");

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

循环嵌套练习:输出99乘法表

/*
* 作业题:输出99乘法表
	1*1=1
	1*2=2 2*2=4
	1*3=3 2*3=6 3*3=9
	1*4=4 2*4=8 3*4=12 4*4=16   内循环为列,外循环为行
	...
* */
public class Demo10 {
    public static void main(String[] args) {



         for (int i = 1; i <= 9; i++){

             for (int j = 1; j <= i; j++){
                 System.out.print(j + "*" + i + "=" + (i*j) + ",");
             }
               System.out.println();
        }
    }
}

随机数

Random类使用步骤

  • 导包:import java.util.Random;
  • 创建对象:Random r = new Random();
  • 生成随机数:r.nextInt(数字); 0 ~ 数字-1

代码案例

import java.util.Random;

public class Demo11 {
    public static void main(String[] args) {
        Random r = new Random();
        int i = r.nextInt(10);
        System.out.println(i);
    }
}

猜数字游戏

//  需求:要完成猜数字的游戏,需要有一个要猜的数字,使用随机数生成该数字,范围1到100

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

public class Demo11 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //请输入一个任意数
       // System.out.println("请输入一个任意数:");
        //int j = sc.nextInt(); 这个要放在循环之内,因为每次都要输入数字,参与循环
        Random r = new Random();
        //随机生成一个范围数字
        int i = r.nextInt(100)+1;


        while(true){
            System.out.println("请输入一个任意数:");
            //请输入一个任意数
            int j = sc.nextInt();
            //比较输入的数字和系统产生的数据,需要使用分支语句。这里使用if..else..if..格式,根据不同情况进行猜测结果显示
            if (j<i){
                System.out.println("你猜的数小了");
            }else if (j>i){
                System.out.println("你猜的数大了");
            } else {
                System.out.println("你猜对了");
                break;
            }
            }
        }
}

补充的循环的两个思想

循环标号

public class Demo01 {
    public static void main(String[] args) {
        //对循环进行标号
       w:
        for (int i = 1; i < 3; i++) {
            n:
            for (int j = 1; j < 5; j++) {
                System.out.println(j);
                if (j == 3) {
                    //停止外循环就会输出一次
                    break w;
                }
            }
        } 

循环分析思想

  public class Demo01 {
    public static void main(String[] args) {
  // 需求:判断是有有3这个数字,有这个数字则输出有3这个数字;没有则输出没有3这个数字
       //定义一个布尔类型变量
        boolean  flage = false;
        for (int i = 1; i <= 5;i++){
            if (i==3){
                flage = true; //r如果有3这个数字,将从新定义为ture
            }
        }//整个循环结束
        //在进行判断输出的是否有3
        if (flage == true){
            System.out.println("有3这个数字");
        }else{
            System.out.println("没有3这个数字");
        }
        System.out.println("----------------");
    }
}

评论 1 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

码农小白的学习晋升之路

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值