Java流程控制语句(Ⅱ)


​少时不懂其中意,长大方知父母恩

活动地址:CSDN21天学习挑战赛
标语:
共同进步,共创未来
前面的内容见:Java流程控制语句(Ⅰ)

一.流程控制语句

1.循环结构语句之for
  • 格式

    for(初始化语句;条件表达式;控制体语句或者步长语句){
    
    		循环体语句;
    
    }       //降低了冗余度
    
  • 执行流程

    • 初始化语句:给变量赋值 (只执行一次)

    • 然后执行条件表达式,看其是否成立,如果成立,执行的是循环体语句------>再次回到控制体语句或者步长语句—>变量自增或者自减

    • 随后再次执行条件表达式,看其是否成立,成立,继续循环体语句---->再次回到控制体语句或者步长语句---->变量自增或者自减

    • 一直执行到条件表达式不成立,for循环结束;

  • 举例

    • 需求:

      • 在控制台输出1-10的每一个数据
      • 循环的求和思想
      • 在控制台输出1-10的之间的所有的数据之和
    • 求和思想:

      • 将上面的这种格式变形一下:

      • 定义一个结果变量: 从0开始 sum这个变量

        • 0 + 1 = 1 ;
          • 1 + 2 = 3 ;
            • 3 + 3 = 6 ;
              • 6 + 4 = 10 ;
                • 10 +5 = 15 ;

      • 两个加数:

      • 前面的这个加数:就是求和结果变量sum,从0开始

      • 后面的这个加数:就是1-10的数据;

    • 使用步骤:

      • 定义一个最终结果变量sum,从0开始记录

      • 使用 for(初始化语句;条件表达式;控制体语句){

        ​ //循环体语句

        ​ //先取出来每一个数据

        ​ 使用结果变量就是上面的数据求和,然后再赋值给最终结果变量;

        ​ }

      • 输出sum即可

public class ForDemo {
    public static void main(String[] args) {
        //定义一个结果变量
        int sum = 0 ;
        for(int x = 1 ; x <=10 ; x ++) {// 1-10之间的数据
             //x的取整:1,2....10;
            sum += x ; //sum = sum + x ;

        }
        System.out.println("1-10的数据之和是:"+sum);
    }
}
  • 经典-水仙花数

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

      •  水仙花数
         *      水仙花指的是三位数,而且这个三位数的每一个位上的立方相加就是当期数据本身
         *      举例:153 = 1 * 1 * 1 + 5*5*5 + 3*3*3
                *      153  % 10  = 3 ;---确定个位的数据
                *      153 / 10  % 10  = 5 --- 确定十位的数据
                *      153 /10 /10 %10 = 1 --- 确定百位上的数据   或   153 / 100 = 1
        
    • 分析:

    • 三位数,明确了范围 100-999—使用for循环

    • 确定每各位的数据本身的值:

      •  定义三个变量,分别代表个位,十位,百位数据本身
        
      •  int ge = 当前这个数据 % 10 ;
        
         int shi = 当前这个数据 /10 %10 ;
        
         int bai = 当前这个数据 /10/10 % 10 ;
        
    • for循环中加入逻辑判断

    • 如果当前x == (gegege)+(shishishi)+(baibaibai),

    • 满足条件,直接输出x

public class forDemo {
    public static void main(String[] args) {
        System.out.println("水仙花数是:") ;

        // 三位数,明确了范围 100-999---使用for循环       
        for (int x = 100; x < 1000; x++) {
            //x:100-999的数据
            //确定每各位的数据本身的值:
            // 定义三个变量,分别代表个位,十位,百位数据本身
            int ge = x %10 ; //x=153
            int shi = x /10 %10 ;
            int bai = x /10 /10 % 10;
            
            if(x==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
                System.out.println(x) ;
            }


        }
    }
}
2.循环结构语句之while
  • 格式

     初始化语句;
             while(条件表达式){
                 循环体语句 ;
                 控制体语句或者步长语句;
             }
    
  • 执行流程:

    •      首先,先初始化语句,对变量赋值;
      
    •      执行条件表达式,是否成立;若成立,则执行循环体语句,依据控制体语句进行变量控制--->再次判断条件表达式是否成立,成立,执行循环体语句--->控制体语句进行变量控制
      
    •      ...
      
    •      当条件表达式不成立,while循环结束;
      
    •      注意事项:控制体语句不要忘了,否则死循环;
      
  • 举例

    • while循环统计水仙花有多少个,并输出
public class WhileTest {
    public static void main(String[] args) {
		//定义统计变量
        int count = 0 ;
        //初始化语句
        int m = 100 ;
        while(m<=999){
            //循环体
            //求出ge,shi,bai的数据
            int ge = m % 10 ;
            int shi = m /10 % 10;
            int bai = m /10 /10 % 10 ;
            //满足条件
            if(m ==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
                //统计变量自增
                count ++;
                System.out.println("第"+count+"次,"+"水仙数是:"+m);
            }
            m++ ;
        }
        System.out.println("水仙花数共有:"+count+"个");
    }
}
  • for循环和while循环的区别

    • 1)共同点:

      • 都能够描述一种循环思想,可以将重复性冗余代码进行优化,提搞程序阅读性
    • 2)不同点:

      • 格式不同

        • for(初始化语句;条件表达式;控制体语句){
          
          		循环体语句;
          
          }
          
        • 初始化语句;

          while(条件表达式){
          
          	循环体语句;
          
          	步长语句;
          
          }
          
      • 场景不同

        • for循环:明确循环次数 (开发中优先都使用for)

        • while循环:不明确循环次数:

        • 举例:

          键盘录入一个数据,玩猜数字游戏,你也不知道到录入多少次才能猜中

      • 是否节省内存资源:从格式上说

        • for循环的好处:循环结束之后,变量被释放了
        • 而while循环,循环结束,依然能够使用这个变量,相对for循环格式来说,比较耗费内存资源
      • 实际开发中:for是使用最常见的

3.循环结构语句之do while
  • 格式

    	初始化语句;
    	do{
    		循环体语句 ;
    		控制体语句 ;
            
    	}while(条件表达式) ;
    

    这个循环语句和while,for循环最大的区别: 当条件不成立的,循环体至少执行一次.

public class DoWhileDemo {
    public static void main(String[] args) {

        int x = 6 ;  //初始化了
        do{
            System.out.println("helloJavaSE"); //执行循环体
            x++;  //7
        }while(x<=5) ;
    }
}
4.循环结构语句之死循环
  • 死循环的两种格式

    • 第一个格式

          for(;;){
               
            循环体语句;
               
           }
      
    • 第二个格式:

      	while(true){  
      
       		//死循环格式中使用比较多
      		 循环体语句;
      
      	}
      
  • 举例

    • 猜数游戏

      • 分析:

        • 需要产生一个随机数:java.lang.Math 里面的功能random()产生一个1-100之间的随机数

          • jdk提供了类:java.lang.Math
          • java.lang包下的类不需要导包,针对数学运算的工具类,提供了很多的方法;
          • 获取伪随机数,取值范围:[0.0,1.0)

          //不断的键盘录入

        • while(true){

          •  创建一个键盘录入对象,录入int类型
            
          •  录入的数据要和Math里面产生的1-100之间数据进行对比,
            
          •  如果大了,提示 "你要猜的数据大了"
            
          •  如果小了,提示"你要猜的数据小了"
            
          •  如果一致,提示"恭喜您,猜对了"
            
          •  结束死循环,break ;
            
               }
            
    public class DieLooperTest {
        public static void main(String[] args) {
    
            //需要产生一个随机数:java.lang.Math 里面的功能random()产生一个
            //1-100之间的随机数
            int number = (int) (Math.random() *100 +1); //[0.0-1.0)*100-->[0.0-100.0)-->[1.0-101.0) 强转取整1-100
            System.out.println(number) ;
            //定义统计变量
            int count = 0 ;
            //不断的键盘录入
            while(true){
                //只要进一次循环就开始计算
                count ++;
                //创建键盘录入对象
                Scanner sc = new Scanner(System.in) ;
    
                //提示并录入数据
                System.out.println("请您输入要猜的数字:") ;
                int guessNumber = sc.nextInt() ;
    
                //使用guessNumber上面的随机数获取到的number进行对比
                if(guessNumber>100 || guessNumber< 0){
                    System.out.println("你要输入数据不合法,它是在0-100之间");
                }else if(guessNumber> number){
                    //如果大了,提示 "你猜的数据大了"
                    System.out.println("你猜的"+guessNumber+"大了") ;
                }else if(guessNumber <number){
                    //如果小了,提示"你猜的数据小了"
                    System.out.println("你猜的"+guessNumber+"小了") ;
                }else{
                    //如果一致,提示"恭喜您,猜对了"
                    System.out.println("恭喜您,第"+count+"次猜对了") ;
    
                    //结束死循环
                    break ;
                }
            }
    
        }
    }
    
5.循环结构语句(补充)
  • for循环嵌套(双重for循环)

    //for循环的嵌套
              for(初始化语句1;条件表达式1;控制体语句1){   //可以看做控制行
                  //循环体就是for循环语句
                  for(初始化语句2;条件表达式2;控制体语句2){  //可以看做控制列
                      循环体语句;,,,
                  }
              }
    
  • 举例

    • 99乘法表

        public class ForForDemo {
          public static void main(String[] args) 
      		for(int x = 1 ; x <= 9 ; x++){ //9行列
                  for(int y = 1 ; y<= x ; y++){//列数随着x的变化而变化
                      System.out.print(x + "×" + y + "=" + (y*x) + "\t");
                      //1*1=1
                      //2*1=2  2*2=4
                      //3*1=3  3*2=6  3*3=9
                      //4*1=4  4*2=8  4*3=12  4*4=16...
                  }
                  System.out.println();//换行
      
              }
          }
      }
      

二.跳转控制语句

1.break
  • break:中断结束(结束循环或者switch语句中)

    public class BreakDemo {
        public static void main(String[] args) {
    
           // break ;
    
            //for循环,10次
            for(int x = 1 ; x <=10 ; x++){
                //加入一个逻辑判断
                if(x == 3){
                    break ; //循环中使用/ switch本身语法就带break
                }
    
                System.out.println(x) ;       // 1   2  (x == 3时跳出循环)
            }
        }
    }
    
2.continue
  • continue:只是结束当前循环,继续立即进入下次循环(循环语句中使用)
public class ContinueDemo {
    public static void main(String[] args) {

        //for循环
        for(int x = 1; x<=10 ; x++){
            if(x == 2){
                continue;//只是结束当前循环,继续立即进入下次循环
            }
            System.out.println(x);      //2不输出
            //1
            //3
            //4
            //5
            //6
            //7
            //8
            //9
            //10
        }
    }
}    
3.return
  • return:结束方法的 (结束有具体返回值的方法)
    • return: 实际开发中,return 需要携带结果,-------引入Java中定义方法
    •      return:  与Java中的方法相关的,很少单独去使用
      
public static void main(String[] args) {

        System.out.println("程序开始了...");
        //for循环
        for(int x =1 ; x <=10 ;x ++){
            //加入逻辑判断
            if(x==3){
                System.out.println("条件成立..");

                return ;  //很少单独用---->结束了方法

            }
            System.out.println(x) ;
        }
        System.out.println("程序结束了,Over...");
    }

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

In-Deep

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

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

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

打赏作者

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

抵扣说明:

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

余额充值