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 + 555 + 333

          • 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...");
    }

在这里插入图片描述

目录
相关文章
|
5月前
|
Java
Java的流程控制语句
Java的流程控制语句
|
5月前
|
Java 索引
Java基础教程(6)-Java中的流程控制语句
【4月更文挑战第6天】Java流程控制包括选择(if, switch)、重复(while, do-while, for)和跳转(break, continue, return)语句。选择语句根据条件执行不同路径,if和switch用于单条件和多条件分支。重复语句用于循环,如for循环的初始化、条件和迭代部分,以及while和do-while循环。跳转语句中,break用于立即退出循环,continue结束当前循环迭代,return则从方法中返回。此外,Java的for each循环简化了数组或集合的遍历,但不能控制遍历顺序或索引。
|
5月前
|
Java
java-流程控制语句
java-流程控制语句
31 1
Java 流程控制语句——循环结构
Java 流程控制语句——循环结构
Java 流程控制语句——循环结构
Java 流程控制语句——分支结构
Java 流程控制语句——分支结构
146 0
Java 流程控制语句——分支结构
|
Java
Com.Java.Basis第四课《Java的流程控制语句》
Com.Java.Basis第四课《Java的流程控制语句》
42 0
|
Java
Java 基础入门 | 第四章 流程控制语句
目录程序的三种结构1.顺序结构2.选择结构if选择语句if-else选择语句3.循环结构whlie循环语句do-while循环语句for循环语句4.流程跳转语句break跳转语句continue跳转语句程序的三种结构1.顺序结构计算机执行程序的步骤是从上到
88 0
Java 基础入门 | 第四章 流程控制语句
|
算法 Java
Java练习题——流程控制语句(含力扣题库真题)
给你一个整数x,如果x是一个回文数,打印true,否则,返回false。(注:回文数是指正序和倒序读都是一样的整数。列如,121是回文数,1231不是)
286 0
Java练习题——流程控制语句(含力扣题库真题)
|
Java
Java基础学习——流程控制语句2(进阶版)
Java基础学习——流程控制语句2(进阶版)
76 0
Java基础学习——流程控制语句2(进阶版)
|
Java
Java基础学习——流程控制语句1
当关系表达式的值为true,则执行语句体,否则执行大括号后面的语句;当对一个bollean型进行判断时可以直接在括号内写变量名,而不是使用“==”来进行判断
68 0
Java基础学习——流程控制语句1