04-循环结构(续)

嵌套for循环

1、语法

for( 开始位置 ; 循环条件 ; 更改条件 ){ //外循环
  for( 开始位置 ; 循环条件 ; 更改条件 ){ //内循环
  循环体
  }
}

2、案例分析

package cn.tedu.fordemo;
        //这个类用来测试 嵌套for
        public class Test2_For2 {
            public static void main(String[] args) {
                //总结1、外循环执行1次,内循环执行多次
                //第一次循环,也就是当i=1时,输出了i的值1,并且输出j的所有值1 2 3 4 5 ,把i自增变成2
                //第二次循环,也就是当i=2时,输出了i的值2,并且输出j的所有值1 2 3 4 5 ,把i自增变成3
                //第三次循环,也就是当i=3时,输出了i的值3,并且输出j的所有值1 2 3 4 5 ,把i自增变成4,结束循环
                for( int i = 1 ; i <= 3 ; i++ ) { //外循环,i= 1 2 3 
                    System.out.println(i);             
                    for( int  j = 1 ; j <= 5; j++) {//内循环 ,j = 1 2 3 4 5
                        System.out.println(j);
                    }
                }
                //总结2、外循环控制行,内循环控制列
                for( int i = 1 ;  i <= 2  ; i++ ) {//外循环,执行2次 i = 1 2
                    for( int j = 1 ;  j <= 3  ; j++ ) {//内循环,执行3次 j = 1 2 3
                        System.out.print("*");//同行展示
                    }               
                    System.out.println();//换行
                }                                
            }
        }

练习:打印正方形

for(int i = 0 ; i < 5 ; i++) {//外循环控制行,执行5次,打印5行
            for(int j = 0 ; j < 5 ; j++) {    //内循环控制列,执行5次,打印5列
                System.out.print("*");//同行展示
            }
            
            System.out.println();//换行
        }

练习:打印左直角三角形

package cn.tedu.fordemo;
        //这个类用来测试 嵌套for的练习
        public class Test3_For2 {
            public static void main(String[] args) {
        //打印左直角三角形
                //第一次循环时,i=1时,内循环: j = 1; j <= 1;此时j的取值范围就是=1,          打印*,换行。i自增变成2
                //第二次循环时,i=2时,内循环: j = 1; j <= 2;此时j的取值范围就是=1 2,        打印**,换行。i自增变成3
                //第三次循环时,i=3时,内循环: j = 1; j <= 3;此时j的取值范围就是=1 2 3,      打印***,换行。i自增变成4
                //第四次循环时,i=4时,内循环: j = 1; j <= 4;此时j的取值范围就是=1 2 3 4,    打印****,换行。i自增变成5
                //第五次循环时,i=5时,内循环: j = 1; j <= 5;此时j的取值范围就是=1 2 3 4 5,  打印*****,换行。i自增变成6 
                for(int i = 1 ; i <=5 ; i++) {//外循环控制行,执行5次,打印5行
                    for(int j = 1; j <= i ; j++) {//外循环控制列。问题是:列数不固定,需要跟随行i改变
                        System.out.print("*");//同行展示
                    }
                    System.out.println();//换行
                }     
            }
        }

练习:打印99乘法表

//打印99乘法表
        for (int i = 1; i <=9; i++) {
            for (int j = 1; j <=i; j++) {
                System.out.print(j+"*"+i+"="+j*i+"\t");
            }
            System.out.println();
        }
效果如下:

 

 

 break和continue

    --1、作用:用来结束循环
  --2、区别:break简单粗暴立刻结束。continue结束这次继续下次。

      a,break和continue都只能用于循环结构中,结束循环
       b,break和continue之后不要再出现代码了,是不可到达的代码

测试:找数字

package cn.tedu.breakdemo;

        import java.util.Scanner;

        //这个类用来测试   结束循环
        //找数字88
        public class Test4_Break {
            public static void main(String[] args) {
                //循环结构,循环100次
                for(int i = 0 ; i < 100 ; i++) {
                    //1,接收100次,用户输入的整数
                    int input = new Scanner(System.in).nextInt();
                    
                    //2,判断是不是88
                    if( input == 88 ) {//是88
                        System.out.println("中了");
                        //a,break和continue都只能用于循环结构中,结束循环
                        //b,break和continue之后不要再出现代码了,是不可到达的代码
                        break ; //循环结束,循环只要看到break就会立刻结束
                    }else {//不是88
                        continue ; //继续输入
                    }
                    
                }
                
            }
        }

 

while循环:先判断再执行

--1、语法
  while(循环条件){
  循环体
  }

--2、练习:猜数字

  随机数的产生:new Random().nextInt(n): nextInt(m)--是指产生m以内的随机数,从0开始.

  经典死循环:while(true)  for(; ;) 都可以实现死循环,死循环必须要有合理的出口,使用break作为出口.

package cn.tedu.whiledemo;

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

        //这个类用来测试  循环结构
        public class Test5_While {
            public static void main(String[] args) {
                // 猜数字
                // 1、让程序产生随机数
                // nextInt(m)--是指产生m以内的随机数,从0开始
                int random = new Random().nextInt(100);
                System.out.println(random);

                //死循环只能用while吗?-- for行吗?--可以,只需要让循环条件永远成立!
        //        for( int i = 1 ; i >= 1 ; i++  ) {
                while (true) { // 循环条件一直满足--true,经典的死循环。必须设置合理的出口!!!。
            // while( random>50 ) {//循环条件可以自己决定
                    // 2、一直接收用户输入的整数
                    int input = new Scanner(System.in).nextInt();
                    // 3、开始比较
                    if (input > random) {
                        System.out.println("大了");
                    } else if (input < random) {
                        System.out.println("小了");
                    } else if (input == random) {
                        System.out.println("中了");
                        break; // 给死循环设置出口!!!
                    }
                }

            }
        }

do...while循环:先执行再判断

--1、语法

  do{
  循环体
  }while(循环条件);

--2、改造猜数字

package cn.tedu.whiledemo;

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

        //这个类用来测试  循环结构
        public class Test5_While {
            public static void main(String[] args) {
                // 猜数字
                // 1、让程序产生随机数
                // nextInt(m)--是指产生m以内的随机数,从0开始
                int random = new Random().nextInt(100);
                System.out.println(random);
                do { // 循环条件一直满足--true,经典的死循环。必须设置合理的出口!!!。
                  // while( random>50 ) {//循环条件可以自己决定
                    // 2、一直接收用户输入的整数
                    int input = new Scanner(System.in).nextInt();
                    // 3、开始比较
                    if (input > random) {
                        System.out.println("大了");
                    } else if (input < random) {
                        System.out.println("小了");
                    } else if (input == random) {
                        System.out.println("中了");
                        break; // 给死循环设置出口!!!
                    }
                }while (true);

            }
        }

三种循环的区别

相同点:都可以解决 重复执行相同任务 的需求。所以三种循环之间可以互相替换。
不同点:
  --for(开始位置;循环条件;更改条件):要求知道从哪儿开始,还有循环的次数。
  --while(循环条件){循环体} : 只需要知道条件。
  --do{循环体}while(循环条件) : 只需要知道条件,而且循环体最少执行1次。
  --while 是先判断再执行
  --do...while 是先执行再判断

posted on 2020-05-06 20:34  liqiangbk  阅读(170)  评论(0编辑  收藏  举报

导航