JAVA零基础入门笔记(六)-循环复习+break+continue

1,前一天的回顾

for循环:

格式:

for(初始化语句;条件判断语句;条件控制语句(步进表达式)){

	循环体;

}

执行过程:

首先会执行初始化语句,然后再执行条件判断语句。

	如果判断结果为真,则进入循环体。如果判断结果为假,整个循环停止。

	再来执行条件控制语句。再次进行条件判断。

案例:

 for(int i = 1;i <= 10;i++){
        System.out.println(i);
    }

快速生成方式:

在idea中适用的。 次数.fori + 回车。//从小到大

在idea中适用的。次数.forr + 回车。//从大到小

在for循环中变量作用范围

情况一

结论:当变量定义在循环外面的时候。其实跟循环没有任何关系的。

当循环结束之后,变量还是可以继续使用的。

 //变量的作用范围:变量只在所属的大括号中有效。
    
    //变量在for循环的外面
    int number = 10;
    for (int i = 0; i < 10; i++) {
        number++;
        System.out.println(number);
    }
    
    System.out.println("-----------------------------");
    //在15行代码中,number可以成功打印出来吗?如果可以,值为多少,如果不可以,为什么?
    System.out.println(number);//20

情况二:

 //变量i
        //当变量定义在初始化语句中时,跟循环有关的。
        //所以当循环结束之后,这个变量从内存中消失了。
        //循环结束之后,这个变量就不能再使用了。
        for (int i = 0; i < 10; i++) {
            System.out.println(i);
        }
        System.out.println("-------------------------------");
        //1,循环结束之后,变量i,还能不能使用?
        System.out.println(i);

情况三:

 //变量的作用范围。
        //现在循环执行10次。
        //第一次循环的时候。开始执行循环体。
            //在循环体当中,定义了一个变量。给这个变量赋值为1.
            //然后给这个变量进行自增。并进行打印。
            //打印完毕之后,循环体结束,执行到右大括号。
            //所以此时,变量就已经从内存中消失了。

        //第二次循环的时候。开始执行循环体。
            //在循环体当中,定义了一个变量。给这个变量赋值为1.
            //此时定义的是一个新的变量number。
            //当第二次循环结束的时候,这个变量就会从内存中消失。

        //第三次循环的时候,开始执行循环体。
            //在循环体当中,再次定义了一个变量。给这个变量赋值为1.
            //....

        for (int i = 1; i <= 10; i++) {
            int number = 1;
            number++;
            System.out.println(number);
        }
        System.out.println("-------------------------------");
        //System.out.println(number);

总结:

第一种情况:变量定义在循环的外面。跟循环没有任何关系。循环结束,变量还可以继续使用。

第二种情况:变量定义在初始化语句中。跟循环有关系。不管循环多少次,使用的都是同一个变量。

当循环结束,初始化语句中的这个变量才会消失。在循环的外面,是无法进行输出的。

第三种情况:变量定义在循环体中。跟循环有关系。但是单次循环结束后,变量就会立马从内存中消失。

每次循环,都是一个新的变量。在循环的外面,是无法进行输出的.

while 循环:

简化格式:

while(条件判断语句){

		循环体;

	}

完整格式:

初始化语句;

	while(条件判断语句){

		循环体;

		条件控制语句;

	}

执行过程:

首先执行初始化语句,然后进行条件判断。

当条件判断为真的时候,才进入到循环体。再来执行条件控制语句。

回到上面再次条件判断。

快速生成方式:

先写循环体:System.out.println("helloworld");

再选中这行代码,按快捷键ctrl + alt + T 选择while将当前代码进行包裹。

do…while循环:(了解)

格式:

do{

		循环体;

	}while(条件判断语句);

执行过程:

先执行循环体,再执行条件判断语句。当条件判断语句为真,再次回到上面执行循环体。

如果条件判断语句为假,此时循环停止。

特点:

不管条件判断语句,是真,还是假。循环体,至少执行一次。

无限循环: 循环停不下来。

格式:

for(;;){

}

解释说明:

  • 初始化语句不写,表示循环开始的时候,不做任何事情。

  • 条件判断语句不写,表示默认为true。

  • 条件控制语句不写,表示循环结束之后,不做任何事情。

  • 此时,就可以无限,重复的执行大括号中的循环体。 ```

while(true){

}

解释说明:

  • 小括号中的true必须要写,不能省略。

  • 就可以无限,重复的执行大括号中的循环体。

do{

}while(true);

解释说明:(了解)

  • 先执行循环体,再到while当中看判断。

  • 就可以无限,重复的执行大括号中的循环体。

使用区别:

  • for:知道了循环次数的时候,可以使用for循环。

  • while:不知道循环次数,但是能知道循环结束条件的时候。

2,continue关键字

用法:

  • 只能作用在循环当中。

  • 在循环的过程中,如果遇到了continue关键字,表示立马结束本次循环,开始继续下次循环。

案例:

//循环1 ~10
//如果当前的数字是偶数,就不打印。 --- 只打印奇数
/*for (int i = 1; i <= 10; i++) {
            if (i % 2 != 0) {
                System.out.println(i);
            }
        }*/

for (int i = 1; i <= 10; i++) {
    if(i % 2 == 0){
        //那么就表示,当前的数字是偶数
        //如果是偶数,那么立马结束本次循环,下面的输出语句不会执行
        //跳到i++,开始下一次循环。
        continue;
    }
    System.out.println(i);
}

使用注意点:

continue关键字下面不能写其他代码,因为永远执行不到
 for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            //那么就表示,当前的数字是偶数
            //如果是偶数,那么立马结束本次循环,下面的输出语句不会执行
            //跳到i++,开始下一次循环。
            continue;
            //当if的条件满足,执行语句体。
            //执行完continue后,本次循环立马结束,跳转到i++。
            //那么这个输出语句永远执行不到。所以,continue下面不能写其他语句。
    		System.out.println(i);
        }   
    }

    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            //那么就表示,当前的数字是偶数
            //如果是偶数,那么立马结束本次循环,下面的输出语句不会执行
            //跳到i++,开始下一次循环。
            continue;
        }  
        //把输出语句写在外面就ok了。
        //因为当if的判断条件不成立的时候,此时输出语句还是可以执行到的。
        System.out.println(i);
    }

3,break关键字

用法:

  • 可以使用在switch语句,还有循环中。
  • 不管用在哪里,都表示结束,停止的意思。

下面我们以循环为例,

在循环的过程中,如果遇到了break,那么整个循环到这个地方就会全部结束。

4,总结

 //相亲
    //1,在自我介绍之后,我就觉得,你不是我的菜。
    //  赶紧结束本次相亲,我好再去相第二个。
    while(true){
        System.out.println("自我介绍");
        if(不入眼){
            continue;
        }
        System.out.println("互留微信");
        System.out.println("尬聊");
        System.out.println("约会");
    }
    System.out.println("结婚");

    //相亲
    //1,在自我介绍之后,我就觉得,遇到了生命中的另一半。
    //那么咱们就没必要再继续浪费时间,直接结婚就好了。
    while(true){
        System.out.println("自我介绍");
        if(遇到了生命中的另一半){
            break;
        }
        System.out.println("互留微信");
        System.out.println("尬聊");
        System.out.println("约会");
    }
    System.out.println("结婚");

5,练习:逢七过

//1 ~100

1 2 3 4 5 6 过 8 9 10 11 12 13 过 15 16 过 18 19 20 过 …

//只要是7的倍数。 i % 7 == 0

//或者包含7. 个位数是7 , 十位数是7

那么都要喊过

i % 7 == 0 || 个位数是7 || 十位数是7

还是只要满足其中一个就喊过

 //逢七过的小案例
    //循环1~100之间的数字。 只要是7的倍数,或者包含7,那么就要喊过
    
    //循环1~100
    for (int i = 1; i < 100; i++) {
        //i表示这个范围中的每一个数字
        //要对每一个数字进行判断
        //只要满足其中一个条件,就需要喊过
        int ge = i % 10;
        int shi = i / 10 % 10;
        if (i % 7 == 0 || ge == 7 || shi == 7) {
            System.out.println("过");
            continue;
        }
        System.out.println(i);
    }

6,输出语句:

  System.out.println("abc");//表示先打印小括号里面的内容,再进行换行操作。
    System.out.print("abc");//表示打印小括号里面的内容,不进行换行操作。
    System.out.println();//表示什么都不打印,只换行。
    -------------------------------------------------------------------
    System.out.print();//如果有,表示不打印,不换行。所以没有这种写法。

7,循环嵌套

  • 循环嵌套就是,循环当中还有其他循环。

  • 这个知识点,是从helloworld开始,到目前为止,最难的。

案例1:打印一个矩形

//打印矩形
//外面的循环 --- 外循环
//里面的循环 --- 内循环
//内循环 其实 是 外循环的 循环体。
for (int i = 1; i <= 4; i++) {
    //在一行中打印5个星
 	for (int j = 1; j <= 5; j++) {
        System.out.print("*");
    }
	//打印完毕之后,再进行换行操作
    System.out.println();
}
//理解代码小技巧:
//首先要能明白,内循环是干嘛的。
//然后再看外循环,外循环,就是把里面要做的事情,重复执行N遍。

当外循环中i = 1的时候,其实就是打印第一行内容。此时1 <=4满足条件,进入循环体当中。

此时外循环的循环体就是内循环。j = 1 ,j<=5满足条件。再次进入内循环的循环体。打印了一个*。然后j++

							  j  = 2,j<=5满足条件。再次进入内循环的循环体。打印了一个*。然后j++

							  j  = 3,j<=5满足条件。再次进入内循环的循环体。打印了一个*。然后j++

							  j  = 4,j<=5满足条件。再次进入内循环的循环体。打印了一个*。然后j++

							  j  = 5,j<=5满足条件。再次进入内循环的循环体。打印了一个*。然后j++

							到目前为止,相当于在第一行,打印了5个*

							  j = 6, j<=5  不成立了,此时,内循环执行完毕。执行换行操作。

 当换行结束之后,表示什么?表示外循环的循环体已经执行完毕了。

此时执行到外循环的i++,变成2。

当外循环中i = 2 的时候,其实就是开始打印第二行内容。此时 2 <= 4 满足条件,进入循环体当中。

此时外循环的循环体就是内循环。而内循环做的事情就是在一行打印5个*,然后换行。当第二行的5个星打印	

 完毕之后。表示此时外循环的循环体已经执行完毕了。

再执行到外循环的i++,变成3.

开始第三次循环 i = 3. 相当于开始打印第三行的内容


开始第四次循环 i = 4,相当于开始打印第四行的内容

总结

  • 外循环,控制了,一共打印几行。

  • 内循环,控制了,在每一行打印多少个星。

案例2:打印一个直角三角形

  //外循环,控制了行数,现在打印5行
    for (int i = 1; i <= 5; i++) {
        for (int j = 1; j <= i; j++) {
            System.out.print("*");
        }
        System.out.println();
    }

理解代码小技巧:

首先要能明白,内循环是干嘛的。

然后再看外循环,外循环,就是把里面要做的事情,重复执行N遍。

执行过程:

当外循环i=1的时候,表示现在打印的是第一行。1<=5满足,进入循环体。
此时,内循环,就相当于

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

就是打印一个星,然后再换行。此时内循环和换行都执行完毕了,那么就要执行到外循环的i++。


当外循环i=2的时候,表示现在打印的是第二行。2<=5满足,进入循环体。
此时,内循环,就相当于

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

就是打印两个星,然后再换行。此时内循环和换行都执行完毕了,那么就要执行到外循环的i++。


当外循环的i=3的时候,表示现在打印的是第三行。3<=5满足,进入循环体。
此时,内循环,就相当于

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

就是打印三个星,然后再换行。此时内循环和换行都执行完毕了,那么就要执行到外循环的i++。


当外循环的i=4的时候,表示现在打印的是第四行。4<=5满足,进入循环体。
此时,内循环,就相当于

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

就是打印四个星,然后再换行。此时内循环和换行都执行完毕了,那么就要执行到外循环的i++。


当外循环的i=5的时候,表示现在打印的是第五行。5<=5满足,进入循环体。
此时,内循环,就相当于

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

就是打印五个星,然后再换行。此时内循环和换行都执行完毕了,那么就要执行到外循环的i++。


5行都打印完毕了,外循环结束,最终的直角三角形也搞定了。

案例3:打印99乘法表

步骤:

1,打印一个9行9列的矩形。

2,把上面的矩形改成一个直角三角形。

此时就跟99乘法表的样子有点像了。

3,修改里面输出的内容。

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

分享了两个小技巧:

  • \t 制表符,在键盘中就是一个tab
    就是一个大空格,但是第二行的tab会跟上一行自动的对齐。

  • 如何更巧妙的拼接一个字符串。

      1,先把最终的结果写在字符串中。
    
      2,把其中有可能发生变化的值用变量替代
    
      3,固定套路,把变量挪到外面
    

8,生成随机数

生成随机数的代码,Java已经帮我们写好了,不需要我们自己单独再实现了。

Java写好的这个类叫做Random,所以,我们直接使用这个类就可以了。

使用步骤:

1,导包

2,创建对象

3,获取随机数

案例:

 package com.itheima.demo1;
    //1,导包 --- 告诉虚拟机这个类在哪 --- idea自动生成
    import java.util.Random;
    public class RandomDemo1 {
        public static void main(String[] args) {
            //获取一个随机数,范围:0-10  包含0,不包含10
            //2. 创建对象 ---- 跟虚拟机打个招呼,我要用这个类了。
            Random r = new Random();
            //3.获取随机数 ---- 才是真正生成随机数的代码
            int number = r.nextInt(10);//把随机数的范围写在小括号中
            System.out.println(number);
        }
    }

注意点:

nextInt的小括号中表示了获取随机数的范围。

这个范围一定是从0开始的。但是不包含小括号里面的数字。

nextInt(10);实际是从0-9之间获取的随机数。

判断技巧:

起始范围一定是从0开始的。

结束范围是到指定的数字结束的,但是不包含小括号中的数字。

案例1:

  //我要从 0 ~ 100 之间获取随机数 (包含0,包含100)
    //2. 创建对象 ---- 跟虚拟机打个招呼,我要用这个类了。
    Random r = new Random();
    
    //3.获取随机数 ---- 才是真正生成随机数的代码
    int number = r.nextInt(101);//把随机数的范围写在小括号中
    
    System.out.println(number);

案例2:

  //  0 ~ 17 之间的随机数 (包含0,但是不包含17)
    Random r = new Random();
    int number = r.nextInt(17);
    System.out.println(number);

案例3:

 // 获取一个 1 ~100之间的随机数。包含1,也要包含100
    Random r = new Random();
    int number = r.nextInt(100) + 1;
    System.out.println(number);

案例4:

 // 获取10个 1 ~100之间的随机数。包含1,也要包含100
    Random r = new Random();
    for (int i = 0; i < 10; i++) {
        int number = r.nextInt(100) + 1;
        System.out.println(number);
    }

注意点

Random r = new Random(); 这行代码不需要放到循环当中。但是放到循环中,也不会出错。

因为这行代码相当于给虚拟机打个招呼。打招呼,只要打一次就可以了。但是打10次也没错,只不过代码运行的效率会变低。

案例5:

技巧:获取任意数到任意数之间的随机数

//获取1个 5 ~ 10 之间的随机数。包含5,也要包含10
Random r = new Random();
//推荐一个方法:
//小技巧
//用于求任意数到任意数之间的随机数
//  5 ~ 10
//1,头尾都减去一个值。让这个范围从0开始。 -5
// 0 ~ 5
//2,尾巴 + 1   // 5 + 1 = 6  -- 就写在小括号中。
//3. 最终的结果再加上第一步减去的值 
int number = r.nextInt(6) + 5;
System.out.println(number);

案例6:

//求 7 ~ 15 之间的随机数  包含7 包含15
Random r = new Random();
//小技巧
//1,头尾都减去一个值。让这个范围从0开始。   -7
// 0 ~ 8
//2,尾巴 + 1      // 8 + 1 = 9
//3. 最终的结果再加上第一步减去的值
int number = r.nextInt(9) + 7 ;
System.out.println(number);

案例7:

//求任意数到任意数之间的随机数
// 获取一个 15 ~ 21之间的随机数 (包含15,也包含21)
// 15 16 17 18 19 20 21
//小技巧:
//1.拿着这个范围减去一个数,让这个范围从0开始。
//15 ~ 21       -15       0 ~ 6
//2.尾巴+1 ----   6 + 1 = 7 --- 7写在nextInt的小括号中。
//3.再加上第一步减去的值。
Random r = new Random();
int number = r.nextInt(7) + 15; 
System.out.println(number);

9,猜数字小游戏

//1,在1~100之间生成一个随机数
Random r = new Random();
//randomNumber就是生成的随机数 --- 50
int randomNumber = r.nextInt(100) + 1;
//相当于是作弊器,把生成的随机数给打印出来。
System.out.println(randomNumber);

//2,键盘录入数字,进行比较。
//键盘录入的数字,就是我们要猜的数字。
Scanner sc = new Scanner(System.in);

//因为不知道次数,所以使用while循环
while(true){
    //键盘录入数字
    System.out.println("老铁,输入一个数字,开始猜吧");
    int guessNumber = sc.nextInt();
    //比较
    if(guessNumber > randomNumber){
        System.out.println("大了");
    }else if(guessNumber < randomNumber){
        System.out.println("小了");
    }else{
        System.out.println("恭喜你,猜中了");
        //如果猜中了,就不需要再猜了,循环结束
        break;
    }
}

注意点:

1,生成随机数的代码一定要写在循环外面。

		如果写在循环里面,那么每次循环都是一个新的随机数,很难猜中。

2,键盘录入的代码一定要写在循环里面。

		如果写在循环外面,那么只能输入一次,在循环的过程中,就不会让你再次输入其他数字了。

下面的代码不需要掌握,了解即可。

public class RandomDemo9 {
    //猜到第3次,必中。
    public static void main(String[] args) {
        //1,在1~100之间生成一个随机数
        Random r = new Random();

        //randomNumber就是生成的随机数
        int randomNumber = r.nextInt(100) + 1;
        System.out.println("当前要猜的数字为" + randomNumber);//33

        //2,键盘录入数字,进行比较。
        //键盘录入的数字,就是我们要猜的数字。
        Scanner sc = new Scanner(System.in);

        //统计猜了多少次。
        int count = 0;

        //因为不知道次数,所以使用while循环
        while (true) {
            //键盘录入数字
            System.out.println("老铁,输入一个数字,开始猜吧");
            int guessNumber = sc.nextInt();//50
            count++;
            if(count == 3){
                System.out.println("恭喜你,猜中了");
                //如果猜中了,就不需要再猜了,循环结束
                break;
            }
            //比较
            if (guessNumber > randomNumber) {
                System.out.println("大了");
            } else if (guessNumber < randomNumber) {
                System.out.println("小了");
            } else {
                System.out.println("恭喜你,猜中了");
                //如果猜中了,就不需要再猜了,循环结束
                break;
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值