千锋学习day04day05 循环结构

循环结构

生活中的循环:在单圈400米的跑道商完成10000米长跑,当跑完25圈时,满足条件,循环结束

程序中的循环:

概念:通过某个条件,重复的执行一段逻辑代码

while循环

语法:

while(布尔表达式){
	//逻辑代码(循环操作)
}

执行流程:

  • 先对布尔表达式进行判断,结果为true,则执行逻辑代码
  • 本次执行完毕后,再次进行判断,结果仍旧为true,则再次执行逻辑代码
  • 直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码

循环有四部分组成

初始与迭代

被循环条件判断的变量,才是初始部分和迭代部分

while的特点

特点:首次即有入口条件,先判断、再执行,适用于循环不次数明确的情况

如 while(i<=100)

课堂案例

public class Test{
	public static void main(String[] args){
		int i = 1;
		int sum = 0;
		
		while(i <= 100){
			sum = sum + i;
			i++;
		}
		System.out.println(sum);
	}
}

public class Test2{
	public static void main(String[] args){
		int i = 1;
		int sum = 0;
		
		while(i < 100){ //1~100之间 包括100为:2550	不包括100为:2450
			if(i%2 == 0){
				sum = sum + i;
			}
			i++;
		}
		System.out.println(sum);
	}
}

课堂案例

package com.zcs.lession04.demo;

public class Demo6 {
	public static void main(String[] args) {
		
		//抄代码	100
		//初始化部分:初始化用于给循环条件和循环迭代使用变量
		int count = 1;
		// while(true) 死循环
		//循环条件:用于判断是否继续循环操作
		while(count<=100) {
			//循环操作:循环要做的事情
			System.out.println("抄代码 T-T~"+ count+"次");
			//迭代部分:更新变量=>初始化变量->循环条件会有出口
			count= count + 1;
			
			
		}
	}
}

package com.zcs.lession04.demo;

import java.util.Scanner;

public class Demo7 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		//初始部分
		boolean flag = true;
		//循环条件
		while(flag) {
			//循环操作
			System.out.println("你还想继续操作吗?");
			//迭代部分
			String a = input.next();
			if(a.equals("no")) {
				flag = false;
			}
		}
	}
}

package com.zcs.lession04.demo;

public class Demo8 {
	public static void main(String[] args) {
		//初始化
		int num = 1;
		//定义一个sum来保存计算的结果
		int sum = 0;
		//循环条件
		while(num<=100) {
			System.out.println(num);
			sum = sum + num;
			num++;
		}
		System.out.println("1~100的和为:"+sum);
	}

}

package com.zcs.lession04.demo;

public class Demo9 {
	public static void main(String[] args) {
		//1~100偶数和
		//初始化
		int num = 1;
		//保存计算结果
		int sum = 0;
		//循环条件
		while(num <= 100) {
			if(num % 2 ==0) {
			sum = sum + num;
			}
			num++;
		}
		//循环迭代
		System.out.println("1~100的偶数和为:"+sum);
	}	
}

循环的组成

public class TestWhile{
	public static void mian(String[] args){
        //1、初始部分:用以判断的变量
		int i = 1;
		while(i < 100){//2、循环条件:决定是否循环的依据
			System.out.println("HelloWorld");//3、循环操作:单次执行的逻辑代码或任务
			i++//4、迭代部分:控制循环条件改变的增量
		}
	}
}
package com.zcs.lession04.demo;public class Demo10 {	public static void main(String[] args) {		int num = 1;		int sum = 0;		while(num<=100) {						//只要num % 10 获取所有个位数的值,判断不是3的就进行累加			if(num % 10 != 3) {				sum = sum + num;			}			num++;		}		System.out.println("个位数不为3的和:"+sum);	}}

do while循环

语法:

do{	逻辑代码(循环操作)}while(布尔表达式);

执行流程:

  • 先执行一次循环操作之后,再进行布尔表达式的判断
  • 如果结果为true,则再次执行循环操作
  • 如果结果为false,才会退出循环结构,执行后续代码

do while的特点

public class TestDoWhile{	public static void main(String[] args){		int i = 1;        //直接执行循环操作,首次没有入口条件		do{							System.out.println("HelloWorld"+i);			i++;		}while(i<=100);        /*        判断满足,则循环.        不满足,则至少执行一次。(执行次数:1~n次)        */	}}

特点:首次没有入口条件,先执行,再判断

do while 的应用场景

public class TestDoWhile{	public static void main(String[] args){		Scanner input = new Scanner(System.in);				char answer;//记录老师当次的评语		do{			System.out.println("抄写一遍作业代码。。。。");			System.out.println("请输入老师评语:");			answer = input.next().charAt(0);//输入y,表示及格,退出循环,否则继续循环		}while(answer != 'y');		System.out.println("作业已完成");	}}

应用场景:适用循环次数不明确的情况

for循环

语法:

for(初始部分;循环条件;迭代部分){	//循环操作}

执行流程:

  • 首次执行初始部分(仅一次)
  • 对布尔表达式进行判断,结果为true,则执行逻辑代码
  • 本次执行完毕后,执行迭代部分,再次判断,结果仍旧为true,则再次执行逻辑代码
  • 直至布尔表达式结果为false时,才会退出循环结构,执行后续代码

for循环的特点

public class TestFor{	public static void main(String[] args){		/*		int i = 1 							1、初始部分(只执行一次)        i <= 100							2、循环条件        System.out.println("HelloWorld");	3、循环操作        i++									4、迭代部分		*/		for(int i = 1; i <= 100; i++){			System.out.println("HelloWorld");		}		System.out.println("程序结束");	}}//for循环与while循环相同,首次判断不满足,则一次都不会执行。(执行次数:0~n次)

特点:首次即有入口条件,先判断、再执行,适用循环次数明确的情况。

package com.zcs.lession06.demo1;public class Demo1 {	public static void main(String[] args) {				for(int i = 0;i<10;i++){			System.out.println("Hello For~");		}				for(int i = 0;i<10;i++){			System.out.println("Hello For~");		}				for(int i = 0;i<10;i++){			System.out.println("Hello For~");		}		//while		int count = 0;		while(count < 10) {			System.out.println("Hello While~");			count++;		}	}}

课堂案例

import java.util.Scanner;public class Test3{	public static void main(String[] args){				Scanner input = new Scanner(System.in);				int n = input.nextInt();				int sum = 1;				for(int i = 1; i <= n; i++){			sum = sum * i;		}		System.out.println(sum);	}}
import java.util.Scanner;public class Test4{	public static void main(String[] args){				Scanner input = new Scanner(System.in);		double num = 0;		for(int i = 1; i <= 5 ; i++){		System.out.println("请输入第"+i+"的学生成绩");		double stu = input.nextDouble();		num = num + stu;		}		double avg = num/5;		System.out.println(avg);	}}
package com.zcs.lession06.demo1;public class Demo4 {	public static void main(String[] args) {		// 死循环,注意可以没有循环4个要数,但是不能没有;;		// for(;;){}		int count = 1;		for (double paper = 0.3; paper <= 8848.86; paper *= 2) {			count++;			System.out.println("纸折了"+count+"次,纸的厚度为:"+paper);		}	}}

流程控制

break : 终止、跳出switch、循环结构

public class TestBreak{	public static void main(String[] args){        for(int i = 1; i<= 10; i++){            if(i ==5 ){                //循环执行中,遇到break,则退出整个循环结构                break;            }            System.out.println("当前循环次数:"+i);        }        System.out.printlm("循环结束");    }}/*当前循环次数:1当前循环次数:2当前循环次数:3当前循环次数:4循环结束*/
package com.zcs.lession06.demo1;/** * break 关键字 * */public class Demo5 {	// alt+/	public static void main(String[] agrs) {		for (int i = 0; i < 10; i++) {			if (i==3) {				//打断循环				break;			}			System.out.println(i);		}		System.out.println("程序结束");	}}
package com.zcs.lession06.demo1;import java.util.Scanner;public class Demo6 {	public static void main(String[] args) {		Scanner input = new Scanner(System.in);				do {			System.out.println("学员在做试卷");			System.out.println("老师输入是否合格(y合格)");			String result = input.next();			if(result.equals("y")) {				break;			};		}while(true);		System.out.println("程序结束!!");	}}

continue:结束本次循环、进入下一次循环

public class TestContinue{	public static void main(String[] args){		for(int i = 1; i<= 10; i++){            if(i ==5 ){                //循环执行中,遇到continue,则跳过次次,进入下一次循环                continue;            }            System.out.println("当前循环次数:"+i);        }        System.out.printlm("循环结束");	}}/*当前循环次数:1当前循环次数:2当前循环次数:3当前循环次数:4当前循环次数:6当前循环次数:7当前循环次数:8当前循环次数:9当前循环次数:10循环结束*/
package com.zcs.lession06.demo1;import java.util.Scanner;public class Demo7 {	public static void main(String[] args) {		//输入5个学员的成绩,如果输入的成绩不合格则跳过本次录入		Scanner input = new Scanner(System.in);		int sum = 0;		for(int i = 0;i<5;i++) {			System.out.println("请输入第"+(i+1)+"个学员的成绩");			int score = input.nextInt();			if(score<0||score>100) {				//结束本次循环,立即进入下次循环				//撤销上一次迭代				i--;				continue;			}			System.out.println("请输入第"+(i+1)+"个学员的成绩是:"+score);			sum+=score;		}		System.out.println("总分:"+sum);	}}
package com.zcs.lession06.demo1;public class Demo8 {	public static void main(String[] args) {		for (int i = 0; i < 10; i++) {			if (i == 5) {				// alt+上下移动代码				System.out.println("进入if判断当中");				/*				 * 				 * 不管是break还是continue				 * 只要执行了后面的代码是不会再执行,				 * 所以关键字下方不能写代码,因为不能看被执行下方代码				 * */				//break;				//continue;				break;			}			System.out.println("i");		}	}}
package com.zcs.lession06.demo1;import java.util.Scanner;/** * 循环输出xxx系统的菜单 *  */public class Demo9 {	public static void main(String[] args) {		Scanner input = new Scanner(System.in);		/*		 * switch和循环嵌套再一起的时候,switch里面的break是不会打断外层循环 只会打断switch结构		 */		outside: while (true) {			System.out.println("请输入要执行的操作:1、新增\t2、修改\t3、退出\t");			String chose = input.next();			switch (chose) {			case "1":				System.out.println("新增了");				break;			case "2":				System.out.println("修改了");				break;			case "3":				System.out.println("删除了");				break outside;			default:				break;			}		}	}}

嵌套循环

概念:在一个完整的循环结构中,嵌套另一个完整的循环结构

打印3行5课星

public class TestNestFor1{    public static void main(String[] args){        for(int i = 1; i <= 3; i++){//外层循环控制行数            for(int j = 1; j <= 5;j++){//内存循环控制列数                System.out.print("*");            }            System.out.println();        }    }}/*    运行结果    *****    *****    ******/

计算3个班,每个班名同学的平均成绩

import java.util.Scanner;public class TestNestFor2{	public static void main(String[] args){        		Scanner input = new Scanner(System.in);		        for(int i = 1; i <= 3; i++){			double sum = 0;            for(int j = 1; j <=5; j++){                System.out.println("输入第"+i+"个班第"+j+"个学生");				double score = input.nextDouble();								sum = sum + score;            }			double avg = sum/5;			System.out.println(avg);        }    }}
package com.zcs.lession06.demo1;public class Demo12 {	public static void main(String[] args) {		int count = 0;		// 125		for (int i = 0; i < 5; i++) {			// 25			for (int j = 0; j < 5; j++) {				// 5				for (int j2 = 0; j2 < 5; j2++) {					count++;				}			}		}		System.out.println(count);	}}
package com.zcs.lession06.demo1;public class Demo15 {	public static void main(String[] args) {		// 99乘法表		for (int i = 1; i <= 9; i++) {			for (int j = 1; j <= i; j++) {				System.out.print(i + "*" + j + "=" + i * j + "\t");			}			System.out.println();		}	}}
package com.zcs.lession06.demo1;public class Demo16 {	public static void main(String[] args) {		//循环标识符 ==>循环命名		outsode: for (int i = 0; i < 5; i++) {			for (int j = 0; j < 5; j++) {				if (j == 3) {					/**					 * 打断他所在的循环					 */					//终止循环名为outside的循环,会把本层循环一起中断					// break outsode;					/**					 * 中止本层(所在的)循环,立即进入下一个循环					 */					//终止循环名为outside的循环,然后继续循环					continue outsode;				}				System.out.println("j==>" + j);			}			System.out.println("i==>" + i);		}	}}

课堂案例

package com.zcs.lession06.demo1;public class Demo13 {	public static void main(String[] args) {		//5行		for (int i = 1; i <= 5; i++) {			//列数			//因为每列要输出的*的个数和每行的i的数值是一致的			//所以使用i作为每列输出的条件控制			for (int j = 0; j < i; j++) {				System.out.print("*");			}			System.out.println();		}	}}
import java.util.Scanner;public class Test7{	public static void main(String[] args){				Scanner input = new Scanner(System.in);		int rows = 0;		//菱形必须是奇数行		do{		System.out.println("请输入一个奇数行号:");		rows = input.nextInt();		}while(rows % 2 == 0);		System.out.println("您输入的行数:"+rows);				// 打印菱形		int up = rows / 2 + 1;//5行		int down = rows / 2; //4行						//1、打印上半段菱形		for(int i = 1; i <= up; i++){			for(int j = up-1; j >= i; j-- ){				System.out.print(" ");			}			for(int j = 1; j <= i*2-1; j++){				System.out.print("*");			}			System.out.println();		}		//打印下半段菱形		for(int i = down; i >= 1; i--){			for(int j = down; j >= i; j-- ){				System.out.print(" ");			}						for(int j = 0 ; j < i*2-1;j++){				System.out.print("*");			}			System.out.println();		}			}}
package com.zcs.lession06.demo1;public class Demo14 {	public static void main(String[] args) {		// 上半段		for (int i = 1; i <= 5; i++) {			// 空格输出			for (int j = 1; j <= 5 - i; j++) {				System.out.print(" ");			}			// 星星输出			for (int j = 1; j <= 2 * i - 1; j++) {				System.out.print("*");			}			System.out.println();		}		// 下半段		for (int i = 1; i <= 4; i++) {						for (int j = 0; j < i; j++) {				System.out.print(" ");			}						for (int j = 7; j >= 2*i-1; j--) {				System.out.print("*");			}			System.out.println();		}	}}

课后作业:

package com.cn.test;import java.util.Scanner;public class Test2 {	public static void main(String[] args) {		do {		System.out.println("===================欢迎使用ATM自动银行服务====================");		System.out.println("1.开户	2.存款	3.取款	4.转账	5.查询余额	6.修改密码	0.退出");		System.out.println("==============================================================");		Scanner input = new Scanner(System.in);		int num = input.nextInt();					switch (num) {			case 1:				System.out.println("==============================================================");				System.out.println("=================执行开户操作=================");				System.out.println("==============================================================");				continue;			case 2:				System.out.println("==============================================================");				System.out.println("=================执行存款操作=================");				System.out.println("==============================================================");				continue;			case 3:				System.out.println("==============================================================");				System.out.println("=================执行取款操作=================");				System.out.println("==============================================================");				continue;			case 4:				System.out.println("==============================================================");				System.out.println("=================执行转账操作=================");				System.out.println("==============================================================");				continue;			case 5:				System.out.println("==============================================================");				System.out.println("=================执行查询余额操作=================");				System.out.println("==============================================================");				continue;			case 6:				System.out.println("==============================================================");				System.out.println("=================执行修改密码操作=================");				System.out.println("==============================================================");				continue;			case 0:				System.out.println("==============================================================");				System.out.println("=================执行退出操作=================");				System.out.println("==============================================================");				break;			default:				System.out.println("输入的错误的操作");			}		} while (true);	}}

总结

循环的概念:

  • while循环

    通过某个条件,重复的执行一段逻辑代码

  • while 循环

    while(){}

  • do while循环

    do{} while();

  • for循环

    for(初始;条件;迭代){操作;}

  • 流程控制关键字

    break、continue

  • 嵌套循环

    在以个完整的循环结构中,嵌套另一个完整的循环结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值