栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java入门 第五节 循环结构(二)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java入门 第五节 循环结构(二)

什么是循环?

 在满足一定的条件下,重复做且有一定规律的事情。

生活中的,围绕操场跑步,跑10圈,从第一圈起到第10圈结束。数钱,钱的总数是不变得,每数一张记录一张直到数完全部。打印机打印固定的纸张。从第一张直到打印完成。
以上的过程都是循环结构。

思考 如果跑圈的话没有说跑多少圈?就会一直跑下去… …出现无限循环, 所以要在跑的时候就规定一定的范围,避免出现这样的情况发生。

在Java中给我们提供了三种循环,分别是 while 循环语句,do… while循环语句,for循环语句。

1.while循环

跑圈,每跑一次输出一圈,一共100圈,要是我们以前如何去处理这样的问题。

System.out.println("跑了第1圈");
System.out.println("跑了第2圈");
System.out.println("跑了第N圈");
... ...
System.out.println("跑了第100圈");
1.1 while语法结构
初始化循环变量;
while(判断条件){ // 返回条件表达式是boolean类型,如图为true就进入循环执行
	执行语句;
	步长; // 如果没有控制,就会出现无限循环。
}
public class WhileDemo {
    public static void main(String[] args) {
        // while循环语法结构
        int num = 1;// 从第一圈开始跑
        while (num<=100){
            System.out.println("跑了第"+num+"圈");
            num++; //步长又相当于程序的出口
        }
    }
1.1.1 练习: 检查做家务

姐姐每天都要打张三一顿,上午做家务,下午姐姐检查,如果下午张三没有完成,姐姐就打一顿,如果张三完成了,姐姐就放过他,让他玩一会。

public class WhileDemo01 {
    public static void main(String[] args) {
        System.out.println("姐姐问:张三家务做完了么?y或者n");
        Scanner input = new Scanner(System.in);
        String answer =input.next();
        //直到做完才可以玩。
        while ("n".equals(answer)){
            System.out.println("打一个嘴巴,然后过了一会问做完了么?");
            answer =input.next(); //相当于步长 
        }
        System.out.println("可以去玩了");
    }
}

输出结果:

姐姐问:张三家务做完了么?y或者n
n
打一个嘴巴,然后过了一会问做完了么?
n
打一个嘴巴,然后过了一会问做完了么?
y
可以去玩了
1.1.2 练习:100以内的偶数之和
public class WhileDemo01 {
    public static void main(String[] args) {
         //求和 sum
        int sum =0;
        int num = 0; //初始化变量
        while (num<=100){
            sum = sum+num;
            num=num+2; // 步长改为每2数一次
        }
        System.out.println("100以内的偶数和是 "+sum);
    }
}

输出结果:

2550
2. do… while 循环 2.1 do… while 语法结构

while循环是 先判断再执行,do…while是 先执行,再判断。小伙伴们是不是有一点懵逼?在现实生活中去饭店,先点菜然后吃饭,过一会在判断有没有吃饱,或者菜够不够,如果没吃饱就接着吃。

do{
	循环操作;
}while(判断条件);
2.1.1 练习:猜数字
public class GuessNum {
    public static void main(String[] args) {
        //随机生成一个数字 10以内的数
        int random = (int)(Math.random()*10);
        System.out.println("请输入你要猜的数字:");
        Scanner input = new Scanner(System.in);
        int guess;
        
        do {
            guess =input.nextInt();  //相当于程序出口
            
            if (guess>random){
                System.out.println("猜大了... ...请重猜");
            }else if(guess 

输出结果:

4
请输入你要猜的数字:
2
猜小了... ...请重猜
6
猜大了... ...请重猜

小结:do… while和while区别

相同点:while循环和do… while循环都是在不确定循环次数时使用。

3. for 循环

  for循环是Java程序设计中最有用的循环语句之一。相对于不固定循环次数的while来说,for是有固定次数的。

3.1 for 语法结构
for(参数初始化;条件判断;更新循环变量){
	执行循环语句;
}

for循环输出和while循环输出对比,输出,“10次好好学习!”

public static void main(String[] args) {
        
        int i = 1;
        while (i<=10){
            System.out.println("好好学习第"+i+"次");
            i++;
        }

        System.out.println("---------华丽的对比线--------------");

        
        for (int j=1;j<=10;j++){ //思考一下?可以到着输出么?
            System.out.println("好好学习第"+j+"次"); 
        }
    }
3.2 for 循环执行顺序

 
        int i=1;
        for (;i<=100;){
            System.out.println("输出第"+i+"次");
            i++; // 相当于 i=i+1;  
        }
3.3 练习:求10以内奇数和,偶数和
public static void main(String[] args) {
        
        int jShu =0; //保存奇数
        int oShu =0; //保存偶数
        for(int i=0;i<=10;i++) {
            if(i%2==1) {
                jShu = jShu+i;
            }else if(i%2==0) {//思考一下?为啥用else if判断??
                oShu = oShu+i;
            }
        }
        System.out.println("奇数和是"+jShu+"n偶数和是"+oShu);
    }

输出结果:

奇数和是25
偶数和是30
3.4 练习:求5人平均身高

控制台接受5人的身高,并算出平均身高多少?

public static void main(String[] args) {

        double high; //身高
        double sum=0; //求和,并初始化

        for (int i=1;i<=5;i++){
            System.out.println("请输入第"+i+"个人的身高");
            high = new Scanner(System.in).nextDouble();
            sum =sum+high; // 求和
        }
        System.out.println("平均身高是"+sum/5);
    }
}

输出结果:

请输入第1个人的身高
1.60
请输入第2个人的身高
1.60
请输入第3个人的身高
1.70
请输入第4个人的身高
1.80
请输入第5个人的身高
1.90
平均身高是1.72
3.5 练习:计算商场顾客占比

商场对顾客的年龄层次进行调查计算各年龄层次的顾客比例。
例如:依次控制台输入消费人年龄, 20岁以下的人消费占比是多少?(10人为例)

 public static void main(String[] args) {
        double count=0; //记录占比人数
        for (int i=1;i<=10;i++){
            System.out.println("请输入第"+i+"个人的年龄:");
            int age = new Scanner(System.in).nextInt();
            if (age>0&&age<=20){
                //注意这里面是 统计多少人
                count++;
            }
        }
        System.out.println("20岁以下的人有"+count/10); 
    }

输出结果:

请输入第1个人的年龄:
28
请输入第2个人的年龄:
23
请输入第3个人的年龄:
26
请输入第4个人的年龄:
29
请输入第5个人的年龄:
68
请输入第6个人的年龄:
99
请输入第7个人的年龄:
18
请输入第8个人的年龄:
19
请输入第9个人的年龄:
20
请输入第10个人的年龄:
36
20岁以下的人有0.3
4. 跳转语句 4.1 break
    break 主要用在 循环语句 或者 switch 语句中。
    a. 用于终止某个循环,使程序跳到循环体外的下一个语句.
    b. 在循环中位于break 后的语句将不在执行(后有语句也会报错),循环也停止执行.
 public static void main(String[] args) {
        for (int j=1;j<=10;j++){
            if(j%2==0){
                System.out.println("好好学习第"+j+"次");
                break;
                // System.out.println("break"); 报错的因为在break后
            }
        }
        System.out.println("break结束后我来执行!");
    }

输出结果:

好好学习第2次
break结束后我来执行!
4.2.1 练习:循环输入成绩,遇负提示错误
public static void main(String[] args) {
        Scanner input =  new Scanner(System.in);
        double score;
        double sum=0;
        // 设置标志,假设开始不为负数。
        boolean flag=false;
        for (int i=1;i<=5;i++){
            System.out.println("请输入第"+i+"次成绩:");
            score = input.nextDouble();
            if (score<0){
                flag=true; //如果输入为负数,就设置
                break;
            }else{

                sum+=score;
            }
        }
        //?思考如何提示,请从新输入
        if (flag==true){
            System.out.println("您输入的有误,请重新输入");
        }else{
            System.out.println("5门课的平均成绩为:"+sum/5);
        }
    }

输出结果:

请输入第1次成绩:
50
请输入第2次成绩:
-30
5门课的平均成绩为:10.0
您输入的有误,请重新输入
4.2 continue
    continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代,不是终止。
    a. 当满足判断条件时,用于跳过本次循环,执行下一次循环.
    b. 不满足判断条件,就正常执行=== 满足条件,就跳过本次。
public static void main(String[] args) {
        for (int j=1;j<=10;j++){
            if(j%2==0){
                System.out.println("好好学习第"+j+"次");
                continue; //跳过本次循环执行下一次
            }
        }
        System.out.println("continue结束后我来执行!");
    }

输出结果:

好好学习第2次
好好学习第4次
好好学习第6次
好好学习第8次
好好学习第10次
continue结束后我来执行!
4.2.练习:录入成绩,求占比例

根据输入的人数,来确定循环输入每人的Java课成绩,统计大于70分学生的占比。如下,输出

请输入要录入的人数:
3
请输入第1科的成绩:
80
请输入第2科的成绩:
52
请输入第3科的成绩:
30
70分以上的人是1个
70分以上的人占0.3333333333333333

代码如下:

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要录入的人数:");
        int num =input.nextInt();

        //成绩 double score
        double score;
        int result=0;
        for(int i=1;i<=num;i++){
            System.out.println("请输入第"+i+"个人的的成绩:");
            score = input.nextDouble();
            if (score<70){
                continue; //明白continue跳转语句的使用
            }
            result++; //累计高于70分的
        }
        System.out.println("70分以上的人是"+result+"个");
        System.out.println("70分以上的人占"+result*1.0/num);
    }
4.3 break 和 continue对比总结
    使用场景
    a. break;常用于switch选择结构 , if选择结构 和 for 循环结构中;
    b. continue;一般用于 循环结构 中;作用(循环结构中)
    a. break;终止某个循环,程序循环结束,跳转到 循环块外的下一条语句;
    b. continue ;跳出本次循环(就是本次不输出),执行下一次循环。
5. 二重for循环 5.1 for… for语法结构
    双重for循环又叫嵌套for循环,即for循环里面套for循环。
    a.根据外层for的条件,判断里层是否执行,如果执行,就将里层for循环都循环完毕后再执行外层for循环,继续判断。即 外层循环执行一遍,内层循环执行多遍。
 for (循环开始位置;判断条件;改变循环条件){ //外层循环for
       for (循环开始位置;判断条件;改变循环条件){ // 内层循环for
                  执行语句;
            }
        }
5.2 练习:打印矩形
*****
*****
*****
*****
*****

代码如下:

for (int i=1;i<=5;i++){
       for (int j=1;j<=5;j++){
          System.out.print("*"); //内循环执行语句
         }
       System.out.println(); //换行
 }

思考问题:

哪个循环控制了行数?哪个循环控制列数(或输出次数)?

5.3 练习:打印直角三角形
public class ForForDemo2 {
    public static void main(String[] args) {
        System.out.print("请输入控制的打印的行数:");
        int rows = new Scanner(System.in).nextInt();
        for (int i=1; i<=rows;i++){ //外循环
            for (int j=1;j<=i;j++){ // 这个j怎么写?能写死么?j
                System.out.print("*");
            }
                //换行
            System.out.println();
        }
    }
}

输出结果:

请输入控制的打印的行数:5
*
**
***
****
*****

思考问题:

如果打印每行输出为1 、3 、5、 7 的三角形改怎么做?

*
***
*****
*******
5.4 练习:打印倒直角三角形

如何把正直角三角形,反转过来成为倒直角三角形?

*****
****
***
**
*

代码如下:

public class ForForDemo4 {
    public static void main(String[] args) {
        System.out.println("输入打印行数:");
        int rows = new Scanner(System.in).nextInt();
        for (int i=1;i<= rows;i++){
            for (int j=rows;j>=i;j--){
                System.out.print("*");
            }
            System.out.println(" ");
        }
    }
}
5.5 经典练习: 打印 99乘法表
1x1=1 
1x2=2 2x2=4 
1x3=3 2x3=6 3x3=9 
1x4=4 2x4=8 3x4=12 4x4=16 
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 

代码如下:

 public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                //需要拼装 格式
                System.out.print(j + "x" + i + "=" + i * j + " ");
            }
            System.out.println();
        }
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/721438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号