• Java零基础系列教程03Java循环结构


    配套视频教程

    本文B站配套视频教程

    几个问题

    张三oracle考试成绩未达到自己的目标。为了表明自己勤奋学习的决心,他决定写一百遍“好好学习,天天向上!”

    循环结构语法

    image.png

    特点:先判断,再执行

    image.png

    实现打印50份试卷

    分析是否包含重复操作?

    使用while循环的步骤

    1. 确定循环条件和循环操作
    2. 套用while语法写出代码
    3. 检查循环是否能够退出

    一个练习

    老师每天检查张三的学习任务是否合格,如果不合格,则继续进行。
    老师给张三安排的每天的学习任务为:上午阅读教材,学习理论部分,下午上机编程,掌握代码部分。

    • 分析是否存在重复操作
    • 使用while循环实现
    1. 确定循环条件和循环操作
    2. 套用while语法写出代码
    3. 检查循环是否能够退出

    image.png

    提示:判断字符串是否相等使用equals函数

     String input = "no";
            while(input.equals("no"))
            {
                System.out.println("合格了吗?(yes/no):");
                Scanner scanner = new Scanner(System.in);
                //接收用户输入
                input = scanner.next();
                if(input.equals("no"))//说明不合格
                {
                    System.out.println("学习学习");
                }
            }
            System.out.println("完成学习任务");
    

    练习二

    2012年培养学员10万人,每年增长20%,请问按此增长速度,到哪一年培训学员人数将达到100万人?

    提示:循环条件和循环操作分别是什么?
    2、2013年培训学员数量 = 100000 * (1 + 0.2 )
    3、int year = 2012;
    double students = 100000;
    while …

    public class whileDemo2 {
        public static void main(String[] args) {
    //        2012年培养学员10万人,每年增长20%,
    // 请问按此增长速度,到哪一年培训学员人数将达到100万人?
    
            int year = 2012;
            double personCount = 100000;
    
            while(personCount <= 1000000)
            {
                //增加年数
                year++;
                //增加人数(1.2)
                personCount = personCount*1.2;
                System.out.println(year+"年"+personCount+"人");
            }
    
            System.out.println(year);
        }
    
    }
    

    程序调试

    在编写程序过程中有时也出现错误,但不好发现和定位错误,有没有好的方法呢?

    • 通过代码阅读或者加输出语句查找程序错误
    • 当程序结构越来越复杂时,需要专门的技术来发现和定位错误,就是“程序调试”
      image.png

    调试例子

    顺序输出1~5这5个数字

    	int i = 1;
    		System.out.println("程序调试演示,注意观察i的值:");
    		while(i < 5){
    			System.out.println(i);
    			i++;
    		}
    

    image.png

    调试解决问题

    调试练习

    编程实现:计算100以内(包括100)的偶数之和
    设置断点并调试程序,观察每一次循环中变量值的变化

     int i = 1;
           int total = 0;
           while(i <= 100)
           {
                if(i%2==0)//说明是偶数
                {
                    total = total + i;
                }
                
                i++;
           }
            System.out.println(total);
    

    另一个问题(do-while循环)

    经过几天的学习,老师给张三一道测试题,
    让他先上机编写程序完成
    然后老师检查是否合格。如果不合格,则继续编写。……

    image.png

    image.png

    特点:先执行,再判断

    while循环和do-while循环的区别

    • 执行次序不同
    • 初始情况不满足循环条件时
      while循环一次都不会执行
      do-while循环不管任何情况都至少执行一次

    作业

    实现整数反转 用户输入任意一个数字比如12345,程序输出54321
    要求用循环实现,并练习调试技巧

      Scanner scanner =  new Scanner(System.in);
            System.out.println("请输入一个数");
            int num = scanner.nextInt();
    
            //12345模10能到最后一位,输出它,再除以10,1234
            //重复上一步
            while(num>0)
            {
                //12345模10能到最后一位,输出它,再除以10,1234
                System.out.print(num % 10);
                num = num / 10;
            }
    

    问题回顾 输出100次“好好学习!”

    image.png

    for循环的语法和执行顺序

    image.png

    问题

    循环输入某同学高考考试的5门课成绩,并计算平均分

    image.png

    分析
    循环次数固定
    使用for循环结构的步骤
    1、分析循环条件和循环操作
    2、套用for语法写出代码
    3、检查循环是否能够退出

    循环条件:循环的次数不足5,继续循环
    循环操作:录入成绩,计算成绩之和

    public class whileDemo2 {
        public static void main(String[] args) {
    
            //循环输入某同学高考考试的5门课成绩,并计算平均分
            Scanner scanner = new Scanner(System.in);
            System.out.println("输入学生姓名");
            String name = scanner.next();
    
            int score = 0;
            int total = 0;
            for(int i = 1; i <= 5; i++)
            {
                System.out.println("请输入"+i+"成绩");
                score = scanner.nextInt();
                total = total + score;
            }
    
            System.out.println(name+"的平均成绩是"+total/5);
        }
    
    }
    

    输出如图所示加法表

    image.png

    使用for循环:
    1、循环初始化:i = 0;j = 输入值
    2、循环条件:i<=输入值
    3、循环操作:计算i+j
    4、循环变量的改变:i++,j--

    public class whileDemo2 {
        public static void main(String[] args) {
    
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入一个值");
            int num = scanner.nextInt();//6
    
            int j = num;
            for(int i = 0; i <= num; i++)
            {
    
                System.out.println(i+"+"+j+"="+num);
                j--;
            }
    
        }
    }
    

    练习

    求1~100之间不能被3整除的数之和

    提示:
    1、循环条件:i<100
    2、循环操作:if (i % 3 != 0) {
    sum = sum + i;
    }

    计算100以内的奇数之和

    设置断点调试程序,追踪3个表达式的执行顺序及循环变量的变化

    回顾break语句

    image.png

    break:改变程序控制流

    用于do-while、while、for中时,可跳出循环而执行循环后面的语句

    练习

    循环录入某学生5门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示录入错误

    image.png

    分析
    循环录入成绩,判断录入正确性:录入错误,使用break语句立刻跳出循环;否则,累加求和

    public class whileDemo2 {
        public static void main(String[] args) {
    
            //循环输入某同学高考考试的5门课成绩,并计算平均分
            Scanner scanner = new Scanner(System.in);
            System.out.println("输入学生姓名");
            String name = scanner.next();
    
            int score = 0;
            int total = 0;
            boolean error = false;//假设用户录入没错误
            for(int i = 1; i <= 5; i++)
            {
                System.out.println("请输入"+i+"成绩");
                score = scanner.nextInt();
                if(score<0 || score>100)
                {
                    error = true;//用户录入有误
                    break;
                }
                total = total + score;
    
            }
    
            if(error == false)
            {
                System.out.println(name+"的平均成绩是"+total/5);
            }
            else
            {
                System.out.println("录入有误");
            }
    
    
        }
    }
    

    1~10之间的整数相加,得到累加值大于20的当前数

    提示
    1、使用循环进行累加,从1到10
    2、判断累加值是否大于20
    3、如果大于20,则跳出循环,并打印当前值

      int total = 0;
    
            int i = 1;
            for(i=1; i <=10; i++)
            {
                total = total + i;
                if(total > 20)
                {
                    break;
                }
               
            }
            System.out.println(i);
    

    continue语句

    continue 作用:跳过循环体中剩余的语句而执行下一次循环

    循环录入Java课的学生成绩,统计分数大于等于80分的学生比例

    image.png

    1、通过循环,获得分数大于等于80分的学生人数num
    2、判断:如果成绩<80,不执行num++,直接进入下一次循环

    • break语句终止某个循环,程序跳转到循环块外的下一条语句
    • continue跳出本次循环,进入下一次循环
        public static void main(String[] args) {
    //       循环录入Java课的学生成绩,
    // 统计分数大于等于80分的学生比例
    
            //5次成绩里,大于等于80分的次数
    
    
            int count = 0;
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请输入班级总人数");
            int personCount = scanner.nextInt();
            for(int i = 1; i <= personCount; i++)
            {
                System.out.println("请输入第" + i + "次成绩");
                //保存本次成绩
                int score = scanner.nextInt();
                //如果成绩小于80的话,跳出本次循环
                //即不累加次数
                if(score < 80)
                {
                    continue;
                }
    
                count++;//累加成绩大于等于80的次数
            }
    
            System.out.println("80分以上学生人数为" + count);
    //        double rate = (double) count/personCount;
    
        }
    }
    

    求1~10之间的所有偶数和

    提示
    1、使用循环进行累加,循环的范围是从1至10
    2 、判断当前数是否为偶数
    3 、如果为奇数跳过,执行下一个循环,如果为偶数,进行累加

  • 相关阅读:
    机器学习模型评估指标汇总
    Linux 搭建Hadoop集群错误锦集
    机器学习--聚类系列--DBSCAN算法
    机器学习--聚类系列--层次聚类
    机器学习--聚类系列--K-means算法
    数据分析--降维--LDA和PCA
    自然语言处理--Word2vec(一)
    自然语言处理--TF-IDF(关键词提取)
    Android学习笔记之BitmapFactory.Options实现图片资源的加载...
    Android学习笔记之蓝牙通信...
  • 原文地址:https://www.cnblogs.com/songboriceboy/p/13757650.html
Copyright © 2020-2023  润新知