配套视频教程
几个问题
张三oracle考试成绩未达到自己的目标。为了表明自己勤奋学习的决心,他决定写一百遍“好好学习,天天向上!”
循环结构语法
image.png
特点:先判断,再执行
image.png
实现打印50份试卷
分析是否包含重复操作?
使用while循环的步骤
- 确定循环条件和循环操作
- 套用while语法写出代码
- 检查循环是否能够退出
一个练习
老师每天检查张三的学习任务是否合格,如果不合格,则继续进行。
老师给张三安排的每天的学习任务为:上午阅读教材,学习理论部分,下午上机编程,掌握代码部分。
- 分析是否存在重复操作
- 使用while循环实现
- 确定循环条件和循环操作
- 套用while语法写出代码
- 检查循环是否能够退出
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 、如果为奇数跳过,执行下一个循环,如果为偶数,进行累加