java中的for循环

for循环

为什么使用for循环结构

for循环在数值循环方面会比while循环简洁,在面对有循环次数的要求时,首选for循环

什么是for循环

循环语句的主要作用是反复执行一段代码,直到满足一定条件为止,总结一下,可以把循环结构分成四个部分

  • 初始阶段:设置循环的初始状态,,如设置记录循环次数的变量 i 为 0

  • 循环体:重复执行的代码,即输出"hello word!"

  • 迭代部分:下一次循环开始前要执行的部分,在while循环结构中,他作为循环体的一部分,如使用 i++ ;经行循环次数的积累

  • 循环条件:判断是否继续循环的条件,如使用" i < 100"判断循环次数时候已经达到了100。

在for循环结构中,这几个部分同样必不可少,不然循环结构就会出现错误。for循环的结构通常如下:

for(表达式1;表达式2;表达式3){
    //循环体
}

for循环流程图

这里的for就是循环结构的关键字。每个表达式的含义如下表格-

表达式形式功能举例
表达式1赋值语句循环结构的初始部分,为循环变量赋初始值int i = 0
表达式2条件语句循环结构的循环条件i < 100
表达式3赋值语句,通常使用++或--运算符循环结构的迭代部分,通常用来修改循环变量的值i++

for关键字后括号中三个表达式必须用“ ; ”隔开。for循环中的这三个部分及{}中的循环体结构必须的四个组成部分完美的结合在一起了,非常简明

for的执行过程

for循环结构执行的顺序如下:

  1. 执行初始部分(int i = 0;)

  2. 进行循环条件判断(i < 100;)

  3. 根据循环条件判断,如果为true,则执行循环体;如果为false,则退出循环。(步骤4和步骤5均不执行)

  4. 执行迭代部分,改变循环变量值(i++)

  5. 依次重复步骤2 ~ 步骤4,直到退出for循环结构。

表达式1在for循环结构中只执行了一次

使用for循环结构

使用for循环输出1 ~ 10

package testfor;
​
public class Teat1 {
​
    public static void main(String[] args) {
        // for 循环 从1~10
        
        //      步骤1;        步骤2     步骤4;
        for (int i = 1; i <= 10; i++) {
            System.out.println(i);//        步骤3
        }
        //      适合计数循环,不适合while循环,菜单循环推荐while
    }
​
}

使用for循环求成绩平均数

package testfor;
​
import java.util.Scanner;
​
public class Test2 {
​
    public static void main(String[] args) {
        
        //循环输入某同学s1成绩
                //步骤:
                //      1.从扫描器接受用户输入的姓名
                //      2.循环5次,每次都要接收用户输入的
                //      3.每次循环,累计求和()
                //      4.循环结束后,用总分除以5得出平均分
                
                Scanner scanner = new Scanner(System.in);
                System.out.println("请输入姓名:");
                String name = scanner.next();
                
                double score = 0;
                for (int num = 1; num <= 5; num++) {
                    System.out.println("请输入第"+num+"次成绩");
                    score += scanner.nextInt();
                }
                System.out.println(name+"的平均分是:"+(score/5));
                scanner.close();
​
    }
​
}

1 ~ 100不能被3整除的和

package testfor;
​
public class Test3 {
​
    public static void main(String[] args) {
        //1 ~ 100不能被3整数数的和
        int sum = 0;
        
        for (int i = 0; i < 100; i++) {
            //      不是3的倍数(不能被三整除的)
            if(i%3 != 0) {
                sum += i;
            }
        }
        
        System.out.println(sum);
        
    }
​
}

break && continue

break

通过循环结构的学习,已经了解了在执行循环时要进行条件的判断。只有在条件为false的时候,才能结束循环,但是根据实际情况需要停止整个循环或者跳到程序的其他部分,这些都可以使用跳转语句实现,java一共有三种跳转语句:break;continue;return。

break的使用

package testbreak;
​
public class Test1 {
​
    public static void main(String[] args) {
        // break用法,跑10圈,第八圈退赛
        
        for (int i = 0; i < 10; i++) {
            System.out.println("跑"+i+"圈");
            
            if (i == 8) {
                System.out.println("我跑不动了!");
                break;
            }
            
        }
    }
​
}
​

continue

continue是在循环中起到跳过当前循环,但是不停止循环的作用。它跳过了该次循环之后仍然执行下一个循环。

package testbreak;
​
public class Testcontinue {
​
    public static void main(String[] args) {
    // break用法,跑10圈,第八圈退赛
        
        for (int i = 0; i < 10; i++) {
            System.out.println("跑"+i+"圈");
            
            if (i == 8) {
                System.out.println("我跑不动了!");
                continue;
            }
            
        }
​
    }
​
}
​

当月课堂练习

练习1:游戏选择菜单页面

package exDay12;
​
import java.util.Scanner;
​
public class Ex {
​
    public static void main(String[] args) {
        //  创建输入器
        //保存输入的密码和用户名
        //循环输入密码和用户值
        //使用if在循环中显示错误和正确
        //正确登录成功,错误给三次机会,
        //输出错误和正确不同文本
        
        Scanner input = new Scanner(System.in);
        int a = 3;
        while(true) {
            a--;
            System.out.print("请输入用户名:");
            String name = input.next();
            System.out.print("请输入密码:");
            String password = input.next();
            
            if((name.equals("jim") && (password.equals("123456")))){
                System.out.println("欢迎登录MyShopping系统!");
                break;
            }else {
                    System.out.println("输入错误!您还有"+a+"机会!");
                    if(a == 0) {
                        System.out.println("\n对不起,您3次均输入错误");
                        break;
                    }
                break;
            }
        }
        input.close();
    }
​
}

练习2:进入游戏房间提示

package exDay12;
​
import java.util.Scanner;
​
public class Ex02 {
​
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("欢迎进入青鸟游戏平台\n");
        System.out.println("请选择您喜爱的游戏:\n");
        System.out.println("********************************************************");
        System.out.println("\t\t\t1.斗地主");
        System.out.println("\t\t\t2.斗牛");
        System.out.println("\t\t\t3.泡泡龙");
        System.out.println("\t\t\t4.连连看");
        System.out.println("********************************************************");
        System.out.print("\n请选择,输入数字:");
        int num = input.nextInt();
        switch(num) {
        case 1:
            System.out.println("欢迎进入斗地主房间!");
            break;
        case 2:
            System.out.println("欢迎进入斗牛房间!");
            break;
        case 3:
            System.out.println("欢迎进入泡泡龙房间!");
            break;
        case 4:
            System.out.println("欢迎进入连连看!");
            break;
        }
        input.close();
    }
​
}

练习3:游戏晋级结算分数输出

package exDay12;
​
import java.util.Scanner;
​
public class Ex03 {
​
    public static void main(String[] args) {
        System.out.println("青鸟游戏平台 > 游戏晋级\n");
        Scanner input = new Scanner(System.in);
        
        int a = 0;
        
        for (int i = 1; i > 0;i++ ) {
            System.out.print("您正在玩第"+i+"局,成绩为:");
            int num = input.nextInt();
            System.out.print("继续玩下一局吗?(yes/no)");
            String yes = input.next();
            
            if(yes.equals("yes")) {     //      继续游戏
                System.out.println("进入下一局");
                
                if(num >= 80) {
                    a++;
                }//次数自增
                if((a >=  4) && (i == 5)) {
                    System.out.println("恭喜!通过一级");
                }else if((a >=  4) && (i == 5)) {
                    System.out.println("恭喜!通过二级");
                }//晋级系统
                if(i == 5) {
                    System.out.println("游戏结束!");
                    break;
                }//结束游戏
                
        }else if(yes.equals("no")) {        //      不继续游戏
            
            System.out.println("您已经中途退出游戏。");
            System.out.println("对不起,您未能晋级,继续加油啊!");
            break;
            
        }else {     //      输入错误
            System.out.println("格式错误请重新输入第"+i+"局成绩!");
        }// if结尾
            
        }// for结尾
        input.close();
    }
​
}

练习4:游戏结算付费文本输出系统

package exDay12;
​
import java.util.Scanner;
​
public class Ex04 {
​
    public static void main(String[] args) {
        
        double moneyA = 10;
        double moneyB = 20;
        Scanner input = new Scanner(System.in);
        System.out.println("青鸟游戏平台 > 游戏晋级\n");
        System.out.println("请选择您玩的游戏类型:");
        System.out.println("\t\t1.棋牌");
        System.out.println("\t\t2.休闲竞技类");
        int classA = input.nextInt();
        
        System.out.println("请输入您的游戏时长:");
        int time = input.nextInt();
        
        if (classA == 1) {
            if (time >= 10) {
                System.out.println("您玩的是牌类游戏,时长是" + time+"小时,可以享受5折优惠,您需要支付"+(time*moneyA*0.5) + "游戏币");
            }else {
                System.out.println("您玩的是牌类游戏,时长是" + time+"小时,可以享受8折优惠,您需要支付"+(time*moneyA*0.8) + "游戏币");
            }
        }else if (classA == 2) {
            if (time >= 10) {
                System.out.println("您玩的是牌类游戏,时长是" + time+"小时,可以享受5折优惠,您需要支付"+(time*moneyB*0.5)  + "游戏币");
            }else {
                System.out.println("您玩的是牌类游戏,时长是" + time+"小时,可以享受8折优惠,您需要支付"+(time*moneyB*0.8) + "游戏币");
            }
        }else {
            System.out.println("输入错误");
        }
        input.close();
    }
​
}

练习5:游戏点击率结算

package exDay12;
​
import java.util.Scanner;
​
public class Ex05 {
​
    public static void main(String[] args) {
        
        System.out.println("青鸟游戏平台 > 游戏晋级\n");
        Scanner input = new Scanner(System.in);     //  创建输入器
        
        double a = 0;
        int num = 1;
        
        for (; num <= 4; num++) {
            System.out.print("请输入第" + num + "个游戏的点击率:");
            int numA = input.nextInt();
            if (numA >= 100) {
                a++;
            }
        }
        System.out.println("点击率大于100的游戏数是:" + a);
        System.out.println("点击率大于一百的游戏所占的比例为:"+(num/(a - 1)*10)+"%");
        input.close();
    }
​
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值