乐趣区

关于java:Java零基础系列教程03Java循环结构

配套视频教程

本文 B 站配套视频教程

几个问题

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

循环构造语法

特点:先判断,再执行

实现打印 50 份试卷

剖析是否蕴含反复操作?

应用 while 循环的步骤

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

一个练习

老师每天查看张三的学习工作 是否合格 ,如果不合格,则持续进行。
老师给张三安顿的每天的学习工作为:上午浏览教材,学习实践局部,下午上机编程,把握代码局部。

  • 剖析是否存在反复操作
  • 应用 while 循环实现
  1. 确定循环条件和循环操作
  2. 套用 while 语法写出代码
  3. 查看循环是否可能退出

提醒:判断字符串是否相等应用 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);
    }

}

程序调试

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

  • 通过代码浏览或者加输入语句查找程序谬误
  • 当程序结构越来越简单时,须要专门的技术来发现和定位谬误,就是“程序调试”

调试例子

程序输入 1~5 这 5 个数字

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

调试解决问题

调试练习

编程实现:计算 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 循环)

通过几天的学习,老师给张三一道测试题,
让他先上机编写程序实现
而后老师查看是否合格。如果不合格,则持续编写。……

特点:先执行,再判断

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 次“好好学习!”

for 循环的语法和执行程序

问题

循环输出某同学高考考试的 5 门课问题,并计算平均分

剖析
循环次数固定
应用 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);
    }

}

输入如图所示加法表

应用 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 语句

break:扭转程序控制流

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

练习

循环录入某学生 5 门课的问题并计算平均分,如果某分数录入为负,进行录入并提醒录入谬误

剖析
循环录入问题,判断录入正确性:录入谬误,应用 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 分的学生比例

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、如果为奇数跳过,执行下一个循环,如果为偶数,进行累加

退出移动版