新手小白学JAVA 嵌套for循环 while do-while

本文深入解析嵌套for循环的使用,通过实例展示如何控制行和列,随后介绍了break和continue在控制循环流程中的作用。接着探讨了while和do-while的区别,并通过猜数字游戏实践。最后总结了循环结构的差异,以及如何打印左右直角三角形和全三角形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 嵌套for循环

1.1 概述

存在至少2层for循环,根据外层的条件,判断里层能否执行
如果能执行,就把里层代码都循环完毕后,再继续判断是否执行外层循环的下一次循环

1.2 嵌套for形式

for循环嵌套格式

1.3 练习:嵌套for循环入门案例

创建包: cn.tedu.basic
创建类: TestForDemo.java
总结1:外循环执行1次,内循环执行多次
总结2:外循环控制行,内循环控制列

package cn.tedu.basic;
/**本类用于测试嵌套for循环*/
public class TestForDemo {
    public static void main(String[] args) {
        /**总结1:外层循环执行1次(控制轮数),内层循环执行多次(在每轮中执行的次数)*/
        //外层循环打印1 2 3
        for (int i = 1; i < 4 ; i++) {//外层循环控制的是执行的轮数,循环3次,执行3轮
            System.out.println("外层"+i+"轮");
            //内层循环打印1 2 3 4 5
            for (int j = 1; j < 6; j++) {//内层循环控制的是每轮执行的次数,循环5次,每轮执行5次
                System.out.println("内层循环第"+j+"次");
            }
        }
       System.out.println("****************打印矩形*********************************");
  for (int i = 1; i <=3; i++) {
            for (int j = 1; j <=5; j++) {
                System.out.print("*");
            }
            System.out.println();//空白行用来换行
        }
       }
}

    
    

    1.4 练习:打印左直角三角形

    创建包: cn.tedu.basic
    创建类: TestForTriangle .java

    package cn.tedu.basic;
    /**需求:利用for循环,打印左直角三角形*/
    //行1星1 *
    //行2星2 * *
    //行3星3 * * *
    //行4星4 * * * *
    //行i星i * * * * *
    public class TestForTriangle {
        public static void main(String[] args) {
            for(int i = 1;i<6;i++) {//外循环
                for (int j = 1; j <=i; j++) {//内循环
                    //注意:需要修改内循环的循环条件,让j的最大值随着i改变,否则写死了
                    System.out.print("*");//在同一轮/同一行打印不换行
                }
                System.out.println();//空白行用来换行
            }
        }
    }
    
        
        

      1.5 练习:打印99乘法表

      创建包: cn.tedu.basic
      创建类: TestFor99Excel.java

      package cn.tedu.basic;
      /**本类用于测试完成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	
      //1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
      //1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
      //1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	
      //1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
      //1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81	
      public class TestFor99Excel {
          public static void main(String[] args) {
              for (int i = 1; i <= 9; i++) {//控制行数,打印9行
                  for (int j = 1; j <= i; j++) {//控制列数,i行打印i列
                      //System.out.println("*");--打印左直角三角形
                      //System.out.println("2*3=6");2--i 3--j 6--i*j
                  	//拼接打印算式,后面拼接一个"\t"表示这是表格格式,\t也被称作制表符
                      System.out.print(j+"*"+i+"="+(i*j)+"\t");
                  }
                  System.out.println();//空白行用来换行
              }
          }
      }
      
          
          

        2 break与continue

        2.1 概念

        break: 直接结束当前循环,跳出循环体,简单粗暴

        break以后的循环体中的语句不会继续执行,循环体外的会执行
        注意如果是嵌套for循环,在内层循环遇到了break,只会跳出当前这一层内循环哦

        continue: 跳出本轮循环,继续下一轮循环

        continue后本轮循环体中的语句不会继续执行,但是会继续执行下轮循环,循环体外的也会执行

        break与continue

        2.2 练习:测试Break与Continue

        创建包: cn.tedu.basic
        创建类: TestBreakAndContinue.java

        package cn.tedu.method;import java.util.Scanner;/**需求:找数字88
         * 提示并接受用户输入100次数字,如果不是88,则继续输入,找到88就结束*/
        public class TestBreakAndContinue {
        	public static void main(String[] args) {
        		//循环体可以帮助我们执行重复的事情,控制for循环执行100次
        		for(int i = 1;i <= 100; i++) {
        			//在每一次循环中都要提示并接收用户输入的数字
        			System.out.println("请输入数字:");
        			int input = new Scanner(System.in).nextInt();
        			if(input != 88) {//用户输入的不是88
        				continue;//直接继续输入
        				/**注意,不管是不是加continue,都可以在猜不对的情况下继续输入
        				 * 只不过加了continue后效率更高,只要数据不等于88,就无需执行后面的代码
        				 * 直接进行下一轮的猜数字即可* */
        			/**break或者continue之后都不允许写代码,都是不可到达的代码*/
        			//System.out.println(0);//Unreachable code
        			}
        			System.out.println("我是用来测试continue有没有跳过循环后半部分代码的哦");
        			if(input == 88) {//找到88了
        				System.out.println("恭喜您,猜对了!");
        				break;//结束程序
        				//System.out.println(0);//Unreachable code
        			}
        		}
        	}
        }
        
            
            

          3 循环结构2 : while

          3.1 形式(先判断,再执行)

          while循环

          4 循环结构3 : do-while

          4.1 形式(先执行,再判断,循环体代码保证最少执行一次)

          在这里插入图片描述

          4.2 练习:猜数字之while与do-while练习

          创建包: cn.tedu.basic
          创建类: TestWhile_doWhile.java

          package cn.tedu.method;
          import java.util.Random;
          import java.util.Scanner;
          /**
           * 本类用于练习while循环
           * 需求: 产生一个随机数,和用户一直在输入的数字做比较,直到用户猜对
           * */
          public class TestWhile {
              public static void main(String[] args) {
                  int r = createNum();//调用可以生成随机数的方法,并且接收生成的随机数
                  System.out.println("打个小抄:"+r);
                 //调用猜数字方法1--while
                  //guessNum1(r);
                  //调用猜数字方法2--do-while
                  guessNum2(r);
              }
              public static void guessNum2(int r) {
                  do {//先执行一次
                      //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;
                      }
                  }while(true);
              }
              //创建猜数字的方法
              public static void guessNum1(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;
                      }
                  }
              }
              //创建一个用来生成随机数的方法
              public static int createNum() {
                  //让程序产生一个随机数
                  //java.util.Random,注意导包,快捷键:Ctrl+Shift+O
                  int random = new Random().nextInt(100);//参数100是自定义的,此时生成的随机数范围是[0,100)的整数
                  return random;
              }
          }
          
              
              

            5 拓展

            5.1 三种循环的区别

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

            5.2 打印右直角三角形

            
            	*
               **
              ***
             ****
            *****
             package day999;
            public class a {
                public static void main(String[] args) {
                    //输出5行
                    for(int i=1;i<=5;i++){
                        //空格三角
                        for(int x=5;x>i;x--){
                            System.out.print(" ");
                        }
                        //*号三角
                        for(int j=1;j<=i;j++){
                            System.out.print("*");
                        }
                        System.out.println();
                    }
                }
            }
            
                
                

              5.3 打印全三角形

                   *
                  ***
                 *****
                *******
              *********
              package day999;
              public class a {
                  public static void main(String[] args) {
                      //打印5行
                      for(int i=1;i<=5;i++){
                          //打印空格的倒三角
                          for(int j=5;j>=i;j--){
                              System.out.print(" ");
                          }       
                          //打印*号的正三角
                          for(int k=1;k<=i*2-1;k++){
                              System.out.print("*");
                          }           
                          System.out.println();
                      }
                  }
              }
              
                  
                  
                评论
                添加红包

                请填写红包祝福语或标题

                红包个数最小为10个

                红包金额最低5元

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

                抵扣说明:

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

                余额充值