循环结构
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跳出本次循环,进入下一次循环 双重循环亦如此