for循环

一、for循环

1.1 语法

for (初始化;循环条件;条件变化控制){
    循环体
}
​
for(int i = 1; i<=5; i++){
    sout(i);
}
​
执行流程:
    第一轮:
        int i = 1;  i<=5;   ==>true;    执行输出,i++
    第二轮:
        i = 2,  i<=5;   ==>true;    执行输出,i++
    第三轮:
        i = 3,  i<=5;   ==>true;    执行输出,i++
    第四轮:
        i = 4,  i<=5;   ==>true;    执行输出,i++
    第五轮:
        i = 5,  i<=5;   ==>true;    执行输出,i++
    第六轮:
        i = 6,  i<=5;   ==>false;   结束循环

1.2 for循环练习题

输出练习
package com.shine.for666;
​
public class Demo03 {
    public static void main(String[] args) {
        /**
         *  输出练习
         *  1、输出1~100
         *  2、输出1~100的奇数/偶数
         *  3、输出100~1
         *  4、输出a~z
         *  5、输出Z~A
         */
        
        // 3、输出100~1
        for (int i = 100; i >= 1; i--) {    // 从100开始,逐渐递减,只要大于等于1就能执行
            System.out.println(i);
        }
        
        System.out.println("------------------");
        
        // 4、输出a~z
        for (int i = 97; i <= 122; i++) {   // a~z对应的数字97~122
            System.out.println((char) i);
        }
    }
}
计算练习
package com.shine.for666;
​
public class Demo04 {
    public static void main(String[] args) {
        /**
         *  计算练习
         *  1、计算1~100累加的结果
         *  2、计算10!
         *  3、计算1 + 1/2 + 1/3 + ... + 1/100
         *  4、计算1 - 1/2 + 1/3 + ... - 1/100
         */
        
        // 3、计算1 + 1/2 + 1/3 + ... + 1/100
        
        double result = 1;  // 统计累加的结果
        
        for (double i = 1; i <= 100; i++) {
            result *= 1/i;
        }
        System.out.println(result);
    }
}
应用题
package com.shine.for666;
​
public class Demo05 {
    public static void main(String[] args) {
        /**
         *  应用题
         *  1、鸡兔同笼
         *  2、水仙花数字
         *  3、猴子摘桃
         *  4、输出1000~2000之间的闰年,每一行5个
         */
        
        /**
         * 3、猴子摘桃
         *  每天吃下全部桃子的一半 + 1,第十天结束发现还剩下1个
         *  问最初摘下多少桃子?
         * 
         *  第十天:
         *      (1+1)*2
         *  第九天
         *      (4+1)*2
         * 
         */
        
        int count = 1;
        int day = 1;    // 从第一天开始
        
        while (day <= 10) { // 一共需要计算10天
            // 每天桃子的数量: (这一天剩下的 + 1) * 2
            count = (count+1) * 2;
            day++;  // 逐渐向前推进
        }
        System.out.println(count);
        
        int num = 0;    // 统计闰年的数量
        
        for (int i = 1000; i <= 2000; i++) {
            if ((i%400==0) || (i%4==0 && i%100!=0)) {
                System.out.print(i + "\t");
                
                // 每发现一个闰年,num自增1
                num++;
                
                // 每一次发现闰年之后判定num是否5的倍数
                if (num % 5 == 0) {
                    // num是5--10--15--20、、、之类的数值
                    System.out.println();
                }
            }
        }
        System.out.println(num);
    }
}

二、流程控制

2.1 概述

  • 可以使用java中的一些关键字影响循环执行的流程

  • break

    • 终止循环或者switch结构

  • continue

    • 跳过本轮循环后面的内容,直接进入新的一轮循环

2.2 break

  • 终止循环或者switch结构

package com.shine.for666;
​
public class Demo06 {
    public static void main(String[] args) {
        loop:for (int i = 0; i < 10; i++) {
            System.out.println(i);
            
            // 判定是否有6出现
            if (i == 6) {
                // 终止循环
                break loop;
            }
            
        }
        System.out.println("OVER");
    }
}

2.3 continue

  • 跳过本轮循环后面的内容,直接进入新的一轮循环

package com.shine.for666;
​
public class Demo07 {
    public static void main(String[] args) {
        /**
         *  continue 
         *      逢7过
         */
        
        for (int i = 0; i < 10; i++) {
            
            // 跳过偶数
            if (i % 2 == 0) {
                continue;
            }
            
            System.out.println(i);
        }
        System.out.println("OVER");
    }
}

三、循环嵌套

3.1 概述

  • 循环中的内容是其他的完整的循环

    • 参见if嵌套

3.2 打印矩形

package com.shine.nest;
​
public class Demo01 {
    public static void main(String[] args) {
        /**
            * * * * * * * * * * 
         */
        
        // 外层循环,控制执行的行数
        for (int i = 0; i < 3; i++) {
            // 内存循环,控制打印的列数
            for (int j = 0; j < 16; j++) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }
}

3.3 99乘法表

package com.shine.nest;
​
public class Demo02 {
    public static void main(String[] args) {
        /**
            * 
            * *
            * * *
            * * * *
            * * * * *
            
            行数  i   j
            1   1   1
            2   2   2
            3   3   3
            4   4   4   
            5   5   5
            
            j <= i
            
         */
        
        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();
        }
    }
}
补充:while循环实现乘法表

3.4 百鸡问题

package com.shine.nest;

public class Demo03 {
    public static void main(String[] args) {
        /**
         *  百鸡问题--老王买鸡
         *      公鸡5钱一只  1~20
         *      母鸡3钱一只  1~33
         *      小鸡1钱3只      3~99
         *  一百钱买鸡一百只,问有几种组合?
         */
        
        for (int g = 1; g < 20; g++) {
            for (int m = 1; m < 33; m++) {
                for (int x = 3; x < 100; x+=3) {
                    // 判定鸡的数量==100 && 钱的数量==100
                    if ((g+m+x==100) && (g*5+m*3+x/3==100)) {
                        System.out.println("公鸡:" + g + ",母鸡:" + m + ",小鸡:" + x);
                    }
                }
            }
        }
    }
}

3.5 ATM案例--丐版

package com.shine.nest;
​
import java.util.Scanner;
​
public class ATMDemo {
    public static void main(String[] args) {
        /**
         *  模拟ATM操作账户的过程
         */
        
        // 创建扫描器
        Scanner sc = new Scanner(System.in);
        
        int balance = 0;    // 余额
        
        int select;     // 用户需要进行的操作选项
        
        // 循环提示操作
        do {
            // 提示并获取用户的选择
            System.out.println("欢迎光临红浪漫银行,请输入您需要的业务(1:开户2:存款3:取款4:转帐5:查询余额6:修改密码0:退出):");
            select = sc.nextInt();
            
            // 使用switch判定用户选择的操作
            switch (select) {
                case 2:
                    // 提示输入并获取存款金额
                    System.out.println("欢迎使用个存款功能,请输入存款金额:");
                    int saveMoney = sc.nextInt();
                    // 余额增加
                    balance += saveMoney;
                    System.out.println("存款成功...");
                    break;
    
                case 3:
                    // 提示输入并获取取款金额
                    System.out.println("欢迎使用个取款功能,请输入取款金额:");
                    int takeMoney = sc.nextInt();
                    
                    // 判定余额是否充足
                    if (balance >= takeMoney) {
                        // 余额减少
                        balance -= takeMoney;
                        System.out.println("取款成功...");
                    } else {
                        System.out.println("余额不足");
                    }
                    break;
                    
                case 5:
                    // 输出余额
                    System.out.println("账户金额:" + balance);
                    break;
                    
                    
                default:
                    System.out.println("您选择的业务尚未开通...");
                    break;
            }
            
        } while (select != 0);  // 如果选项不是0就一直执行
        System.out.println("谢谢使用,期待您再次光临!!!");
    }
}   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值