java+if循环结构_3 Java循环结构

配套视频教程

几个问题

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

循环结构语法

3556b9f2061c

image.png

特点:先判断,再执行

3556b9f2061c

image.png

实现打印50份试卷

分析是否包含重复操作?

使用while循环的步骤

确定循环条件和循环操作

套用while语法写出代码

检查循环是否能够退出

一个练习

老师每天检查张三的学习任务是否合格,如果不合格,则继续进行。

老师给张三安排的每天的学习任务为:上午阅读教材,学习理论部分,下午上机编程,掌握代码部分。

分析是否存在重复操作

使用while循环实现

确定循环条件和循环操作

套用while语法写出代码

检查循环是否能够退出

3556b9f2061c

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);

}

}

程序调试

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

通过代码阅读或者加输出语句查找程序错误

当程序结构越来越复杂时,需要专门的技术来发现和定位错误,就是“程序调试”

3556b9f2061c

image.png

调试例子

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

int i = 1;

System.out.println("程序调试演示,注意观察i的值:");

while(i < 5){

System.out.println(i);

i++;

}

3556b9f2061c

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循环)

经过几天的学习,老师给张三一道测试题,

让他先上机编写程序完成,

然后老师检查是否合格。如果不合格,则继续编写。……

3556b9f2061c

image.png

3556b9f2061c

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

3556b9f2061c

image.png

for循环的语法和执行顺序

3556b9f2061c

image.png

问题

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

3556b9f2061c

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);

}

}

输出如图所示加法表

3556b9f2061c

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

3556b9f2061c

image.png

break:改变程序控制流

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

练习

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

3556b9f2061c

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分的学生比例

3556b9f2061c

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值