循环结构以及循环关键字

循环结构

1. 循环结构特点

任何循环都要求有四个必不可少的条件

  • 1.计数器初始化

  • 2.循环条件

  • 3.循环体

  • 4.计数器变化

2. while循环

while单词:当……

while ( 循环条件 ) {

循环操作

}

package com.qfedu.test1;
​
import java.util.Scanner;
​
/**
 *  需求:老师每天检查赵四的学习任务是否合格,
 *  如果不合格,则继续进行。
 *  老师给赵四安排的每天的学习任务为:
 *  上午阅读教材,学习理论部分,下午上机编程,掌握代码部分
 *
 */
public class Test3 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        System.out.println("请问你的学习成绩是否合格?y/n");
        
        String answer = input.next();
        
        while(answer.equals("n")) {
            System.out.println("上午阅读教材,学习理论部分");
            System.out.println("下午上机编程,掌握代码部分");
            
            System.out.println("请问你的学习成绩是否合格?y/n");
            answer = input.next();
        }
        
        System.out.println("恭喜你,完成任务!");
        
    }
}

3. do-while循环

while和do-while的区别

  • do-while循环 先执行后判断 不管条件是否成立 至少执行一次

  • while循环 先判断后执行 条件不成立 一次都不执行

package com.qfedu.test2;
​
import java.util.Scanner;
​
/**
 *  区别:while和do-while的区别
 *  do-while循环 先执行后判断 不管条件是否成立 至少执行一次
 *  while循环 先判断后执行 条件不成立 一次都不执行
 * 
 *  需求:经过几天的学习,老师给赵四一道测试题,
 *  让他先上机编写程序完成,然后老师检查是否合格。如果不合格,则继续编写…… 
 *
 */
public class Test1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        String answer;
        
        do {
            System.out.println("编写代码,上机测试……");
            
            System.out.println("请输入是否合格?y/n");
            
            answer = input.next();
        }while(answer.equals("n"));
        
        System.out.println("恭喜完成任务!");
        
    }
}
​
package com.qfedu.test2;
/**
 *  使用do-while循环打印N遍好好学习
 *
 */
public class Test2 {
    public static void main(String[] args) {
        int i = 1;
        do {
            System.out.println("好好学习" + i);
            i++;
        }while(i <= 1000);
    }
}

4.for循环

单词 为了 ……

第一轮

1.计数器初始化 最先执行 且只执行一次

2.判断条件

3.循环体

4.计数器变换

第二轮

直接从判断条件开始执行

循环次数固定,确定的情况下,for循环比while和do-while书写简洁

package com.qfedu.test3;
/**
 *  for循环  
 *  单词  为了 ……
 *  for循环执行过程
 *  第一轮
 *      1.计数器初始化  最先执行 且只执行一次
 *      2.判断条件
 *      3.循环体
 *      4.计数器变换
 *  第二轮
 *      直接从判断条件开始执行 
 * 
 *  循环次数固定,确定的情况下,for循环比while和do-while书写简洁
 *
 */
public class Test1 {
    public static void main(String[] args) {
        for(int i = 0;i < 15;i++) {
            System.out.println("好好学习" + i);
        }
        
        System.out.println("程序结束");
        
        
    }
}
​
package com.qfedu.test3;
​
import java.util.Scanner;
​
/**
 *  循环输入某同学结业考试的5门课成绩,并计算平均分
 *
 */
public class Test2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        System.out.println("请输入姓名");
        
        String name = input.next();
        
        double sum = 0;
        
        for(int i = 1;i <= 5;i++) {
            System.out.println("请输入第"+ i +"门成绩");
            
            double score = input.nextDouble();
            
            sum += score;
        }
        
        System.out.println("总成绩是:" + sum);
​
        System.out.println(name + "同学的平均分是:" + sum / 5);
        
        System.out.println("程序结束");
        
    }
}

4.1 for循环常见问题

for循环常见问题1 计数器未初始化

package com.qfedu.test4;
/**
 *  for循环常见问题1  计数器未初始化
 */
public class Test2 {
    public static void main(String[] args) {
        int i = 0;
        for(;i < 10;i++) {
            System.out.println(i);
        }
    }
}​

for循环常见问题2 缺少判断条件

package com.qfedu.test4;
/**
 *  for循环常见问题2 缺少判断条件
 *
 */
public class Test3 {
    public static void main(String[] args) {
        for(int i = 0;;i ++) {
            System.out.println(i);
        }
        
        //  System.out.println("程序结束"); 因为上边的for循环缺少判断条件 所以代码无法执行到这里
    }
}

for循环常见问题3 缺少计数器变化

package com.qfedu.test4;
/**
 *  for循环常见问题3 缺少计数器变化
 *
 */
public class Test4 {
    public static void main(String[] args) {
        for(int i = 0;i < 10;) { // 缺少计数器变化
            System.out.println(i);
        }
    }
}

for循环常见问题4 缺少计数器初始化 、判断条件、计数器变化

package com.qfedu.test4;
/**
 *  for循环常见问题4  缺少计数器初始化 、判断条件、计数器变化
 *
 */
public class Test5 {
    public static void main(String[] args) {
        for(;;) {
            System.out.println("hello world");
        }
    }
}

5.循环对比和总结

区别

  • 区别1:语法

     

  • 区别2:执行顺序 while 循环:先判断,再执行 do-while循环:先执行,再判断 for循环:先判断,再执行

  • 区别3:适用场景

    循环次数确定的情况,通常选用for循环 循环次数不确定的情况,通常选用while或do-while循环

6.break关键字

适用场景:

1.switch中 表示跳出switch结构

2.3种循环中 表示中断循环结构 没有执行完的循环次数 不再执行

通常结合分支结构使用

package com.qfedu.test5;
/**
 *  使用do-while循环  break 实现跑步退出
 *
 */
public class Test3 {
    public static void main(String[] args) {
        int i = 1;
        do {
            if(i == 3) {
                System.out.println("太累了,退出");
                break;
            }
            
            System.out.println("跑步第"+ i +"圈");
            i++;
​
            
        }while(i <= 10);
        
        System.out.println("程序结束");
        
    }
}
​

练习

package com.qfedu.test5;
​
import java.util.Scanner;
​
/**
 *  使用循环录入5门成绩 如果输入为负数 停止录入 并且提示
 *
 */
public class Test4 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        int sum = 0;
        
        boolean flag = true;
        
        for(int i = 1;i <= 5;i++) {
            System.out.println("请输入第"+ i +"门成绩");
            int score = input.nextInt();
            
            if(score < 0) {
                flag = false;
                System.out.println("分数录入错误,请重新录入");
                break;
            }
            
            sum += score;
        }
        
        if(flag) {  // flag == true
            System.out.println("平均分是" + sum / 5);
        }else {
            System.out.println("分数录入有误,不再计算平均分");
        }       
    }
}

7. continue关键字

continue 继续

适用场景:只能用在循环中,表示跳出本次循环,继续执行下一次循环

package com.qfedu.test6;
​
import java.util.Scanner;
​
/**
 *  continue 继续
 *  适用场景:只能用在循环中,表示跳出本次循环,继续执行下一次循环
 *  循环录入Java课的学生成绩,统计分数大于等于80分的学生比例
 *
 */
public class Test2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
​
        System.out.println("请输入人数");
        
        int num = input.nextInt();
        
        double count = 0;
        
        for(int i = 1;i <= num;i++) {
            System.out.println("请输入第"+ i +"个人的成绩");
            int score = input.nextInt();
            if(score <= 80) {
                continue;
            }
            count ++;
        }
        
        
        System.out.println("大于80分的总人数是:" + count);
        System.out.println("大于80分人数占比是:" + count / num * 100 + "%");
        
        
        
    }
}

8.break和continue的区别

  • 使用场合 break用于switch结构和循环结构中 continue用于循环结构中

  • 作用(循环结构中) break语句终止某个循环,程序跳转到循环块外的下一条语句 continue跳出本次循环,进入下一次循环 双重循环亦如此

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值