Java 循环

Java学习第3天 循环

循环就像是单圈400米的跑道上完成10000米长跑,跑完25全,满足条件,循环结束请添加图片描述
跑满25圈,对我们来说可能非常久且不太可能,对计算机来说,就是一瞬间的事。

1、for循环

for循环多用于明确循环次数的循环里。
for循环恐怕是用的最多的循环了,观赏性和逻辑性和可读性都非常强。

语法:
for(初始部分 ; 循环条件 ; 迭代部分){
//循环操作
}

  • 首先,初始化一个变量
  • 在循环条件中布尔值判断,为true时候运行下面代码,为false时候跳出循环
  • 本次循环执行完毕后,执行迭代对象,再次判断。如果仍为true,则会再次执行代码(注意:若迭代部分设置不好,容易出现死循环)
  • 直到布尔判断为false,才会跳出整个循环,执行后续代码(当然,break也可以,后面说)

打印100遍hello world

public class Demo01 {
    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            System.out.println("hello world");
        }
    }
}
结果:
hello world
hello world
hello world
....

其流程为,看图
请添加图片描述
例题2,计算n的阶乘,例如n = 10, 那么n的阶乘为 10 * 9 * 8 * 7 * 6…*1

public class Demo01 {
    public static void main(String[] args) {
        int sum = 1;
        for (int i = 10; i >= 1; i--) {
            sum = sum * i;
            System.out.print(i + " ");
        }
        System.out.println("sum: "+sum);
    }
}
结果
10 9 8 7 6 5 4 3 2 1 sum: 3628800

需要知道自己设置的i的值的变化是否正确,可能一不小心 i 就变成2或者0就停了,结果就不对了

1.1for循环打印三角形

循环结构是否能出师,如果能自己完成,那就没问题了
第一题,简单点,打印出下面的直角三角形

在这里,需要用到循环的嵌套
外层循环控制行数,内层循环控制输出星星等的个数

在这里插入图片描述

public class demo02 {
    public static void main(String[] args) {
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print("*");
            }
            //每打印完一行后换行
            System.out.println();
        }
    }
}

下面到这个了
在这里插入图片描述
需要计算好空多少个格子再输出" * “,需要找好每行空格和” * "的个数规律,就很容易完成了,只要找好数量和行数之间的关系,就很好弄出来了

public class demo02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //控制台输入没有一句提示语,你会认为编辑器是不是卡了,或者自己写错了
        System.out.println("请输入需要打印的行数:");
        int len = sc.nextInt();
        for (int i = 1; i <= len; i++) {
            //先打印空格
            for (int j = i; j <len ; j++) {
                System.out.print(" ");
            }
            //打印星星
            for (int j = 1; j <= (2*i - 1); j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
2、while循环

for能做的,whlie也能做。

while(循环判断){
​ >代码块
}
在循环判断中,若结果为true,则执行代码块
若结果为false,则结束循环

用while循环打印100遍的HelloWorld

public class Demo03 {
    public static void main(String[] args) {
        int i = 0;
        while(i<100){
            System.out.println("HelloWorld");
            i++;
        }
        System.out.println(i);
    }
}

结果:
HelloWorld
HelloWorld
HelloWorld
....
100     //i最后的数值

请添加图片描述
while循环和for循环差不多,但while循环需要自己把初始化值写到外面,循环的迭代 (如i++)需要自己手动添加到代码里,这样就稍微灵活点,同时也会复杂点,迭代放到代码开头或结尾输出的结果有可能会不同。
可以自己尝试打印星星

3、do while

场景适用于循环次数不明的情况

do{
​ 代码块
}while(条件判断);

与while几乎相同,不同的是它需要先执行一次代码块,再进行判断,也就是说,无论如何它都至少执行一次。

银行取钱案例

字符串判断是否相同,不能用“==”,需要用"equals"
“123” == "123"是不行的,返回false
“123”.equals(“123”) 返回true

public class Demo04 {
    public static void main(String[] args) {
        //密码为123456,字符串类型
        String passworld = "123456";
        //银行取钱,输入密码,输错一次后还有三次机会
        int num = 3;
        //控制台输入实例化
        Scanner sc = new Scanner(System.in);

        do {
            System.out.println("请输入你的密码:");
            String pw = sc.next();
            if (passworld.equals(pw)){
                System.out.println("恭喜你,输入正确了,可以拿钱了");
                break;
            }else{
                if (num==0){
                    System.out.println("你没机会取钱了,但你可以存钱");
                }else {
                    System.out.println("输入错误,你还有" + num + "次输入机会");
                }
                num--;
            }
        }while (num>=0);

    }
}
结果:
请输入你的密码:
12345
输入错误,你还有3次输入机会
请输入你的密码:
1549
输入错误,你还有2次输入机会
请输入你的密码:
4568
输入错误,你还有1次输入机会
请输入你的密码:
13546
你没机会取钱了,但你可以存钱
4、break, continue, return
4.1break

为跳出该循环

当i = 50时候,跳出循环,遇到break时候,他会直接跳出该循环,循环里面剩下的内容就不运行了。
public class Demo05 { public static void main(String[] args) { int i = 0; while(i<100){ System.out.println(i); if (i==50){ break; } i++; } } } 结果: 0 1 2 3 ..... 50
要知道break只是跳出当前循环,如果我是嵌套循环,不是跳出所有循环。
下面是嵌套循环例子

public class Demo06 {
    public static void main(String[] args) {
        for (int i = 0; i < 4; i++) {
            System.out.println("这是第"+i+"层外循环");
            for (int j = 0; j < 3; j++) {
                System.out.println(j);
                if (j==1){
                    System.out.println("我要跳出去了~~");
                    break;
                }
            }
        }
    }
}
结果:
这是第0层外循环
0
1
我要跳出去了~~
这是第1层外循环
0
1
我要跳出去了~~
这是第2层外循环
0
1
我要跳出去了~~
这是第3层外循环
0
1
我要跳出去了~~
4.2continue

为跳过当前循环

public class Demo07 {
    public static void main(String[] args) {
        for (int i = 0; i < 3; i++) {
            if (i==2){
                continue;
            }
            System.out.println(i);
        }
    }
}
结果:
0
1

可以看到,当为2时候,跳出了当前循环,后面的代码就不运行了,所以没有2出现
可套如上面break例子看看,把break换成continue就行了

4.3return

return是结束该函数,返回值(可能没有放回值,后面函数内容提到)
在main函数里,使用return相当于关机键,把所有东西都关掉了,遇到return后面所有代码都不运行

public class Demo07 {
    public static void main(String[] args) {
        for (int i = 0; i < 3; i++) {
            if (i==2){
                return;
            }
            System.out.println(i);
        }
        System.out.println("你好");
        System.out.println("在吗");
    }
}
结果:
0
1

可以看到,循环外面的"你好","在吗"都不运行了。

5、标号
  • 通过标号,使循环更加灵活,可以在任意循环里结束其他的循环语句

例子

public class Demo08 {
    public static void main(String[] args) {
        K:
        for (int i = 0; i < 5; i++) {
            System.out.println("这是外层循环" + i);
            for (int j = 0; j < 3; j++) {
                System.out.println(j);
                if (j==2){
                    System.out.println("我要结束标号K循环");
                 break K;
                }
            }
        }
    }
}
结果:
这是外层循环0
0
1
2
我要结束标号K循环

可以看到外层循环有标号为K,第一次循环时候,j==2时候,break K,标号为K的循环结束了。可以换成continue试下

但没有return K的,标号只使用于break和continue中

6、循环其他知识
6.1死循环

很多时候需要用到死循环,用break来进行断掉

while(true) 为死循环
for(;;){}   也为死循环,且语法是正确的


for和while相似,这样做其实就和while差不多了
for (int i = 0; i < 10; ) {
     i++;
     System.out.println(i);
}
6.2 变量的生命周期

在循环里定义的变量,只能在循环里使用,不能带出外面

例一

public class Demo10 {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
        }
        System.out.println(i);
    }
}
报错!! 外面没有定义 i

例二

public class Demo10 {
    public static void main(String[] args) {
        int i = 0;
        while(i<3){
            int j = 0;
            i++;
            j++;
            System.out.println(j);
        }

        System.out.println("这是外层 i= "+i);
//        System.out.println(j);       //while里面定义的,在循环外面用不了,报错
    }
}
结果
1
1
1
这是外层 i= 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值