循环结构

1.局部变量

局部变量 描述
赋值 必须先赋值才能使用
定义位置 定义在方法内部
作用范围 离当前变量最近的大括号以内
重名 重合的作用范围不能重名
生命周期 随着方法的入栈而生效,随着方法的出栈而死亡
存储位置 基本数据类型:变量和值都存在栈中;引用数据类型:栈中存放变量名(引用)堆中存方法值

2.堆(heap)和栈(stack)

栈:先进先出 FILO first in last out
堆:先进先出 FIFO first in first out

3.循环

3.1 while循环

while:当……
循环必要条件:
1.计数器初始化
2.判断条件
3.循环体
4.计数器变化
while循环特点:while循环可以处理循环次数确定的情况,更擅长处理循环次数不确定的情况,如果条件不成立,一次都不会执行。

public class Test2 {
	public static void main(String[] args) {
		int i = 1; // 1.计数器初始化
		while(i <= 100) { // 2.条件判断
			System.out.println("第" + i + "遍打印好好学习" ); // 3.循环体
			i++;// 4.计数器变化
		}
		
		System.out.println("程序结束");
	}
}
/**
 * 	老师每天检查赵四的学习任务是否合格,如果不合格,则继续进行。
 * 	老师给赵四安排的每天的学习任务为:
 * 	上午阅读教材,学习理论部分,
 * 	下午上机编程,掌握代码部分
 * 
 * 	while循环可以处理循环次数确定的情况 
 * 	更擅长处理循环次数不确定的情况 
 * 	如果条件不成立 一次都不会执行
 * @author WHD
 *
 */
public class Test1 {
	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();
		}
		
		
//		if(answer.equals("n")) {
//			System.out.println("上午阅读教材");
//			System.out.println("下午敲代码");
//		}else {
//			System.out.println("恭喜完成");
//		}
		System.out.println("恭喜完成");
		System.out.println("程序结束");
	}
}

3.2 do-while

先执行,后判断,不管条件是否成立,至少执行一次
while和do-while的区别?
while先判断后执行,如果条件不成立,一次都不执行
do-while先执行后判断,不管条件是否成立,至少执行一次
do-while更擅长处理循环次数不确定的情况

import java.util.Scanner;

/**
 * 	do-while 先执行 后判断 不管条件是否成立 至少执行一次
 * 	经过几天的学习,老师给赵四一道测试题,
 * 	让他先上机编写程序完成,然后老师检查是否合格。
 * 	如果不合格,则继续编写……
 * @author WHD
 *
 */
public class Test2 {
	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"));
		
//		if(answer.equals("n")) {
//			System.out.println("继续编写代码");
//		}else {
//			System.out.println("恭喜完成");
//		}
		System.out.println("恭喜完成");
		System.out.println("程序结束");
	}
}
/**
 * 	使用do-while实现N遍好好学习
 * @author WHD
 *
 */
public class Test3 {
	public static void main(String[] args) {
		int i = 1;
		do {
			System.out.println("第"+ i +"遍好好学习");
			i++;
		}while(i <= 100);
	}
}

3.3 for循环

for循环只能用于处理循环次数确定的情况,书写比while或者do-while更加简洁
for循环执行顺序
第一轮:
1.计数器初始化,并且只执行一次
2.条件判断
3.循环体
4.计数器变化
第二轮:
直接从判断条件开始继续执行

import java.util.Scanner;

/**
 * 	循环输入某同学结业考试的5门课成绩,并计算平均分
 * @author WHD
 *
 */
public class Test2 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		double sum = 0; // 定义一个变量用于计算总分
		for(int i = 1;i <= 5;i++) {
			System.out.println("请输入第"+ i +"门成绩");
			double score = input.nextDouble(); // 每次接收并且存储到score中
			sum += score; // 每次将score累计到sum中
		}
		System.out.println("平均分是" + sum / 5);
	}
}
import java.util.Scanner;

/**
 * 	根据用户输入的数字打印加法表
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个数字");
		int num = input.nextInt();
		
		for(int i = 0 ;i <= num;i++) {
			System.out.println(i + "+" + (num - i) + "=" + num);
		}	
	}
}

4.break关键字

使用break中断循环
break适用场景:
在switch中表示跳出switch结构
在循环中表示中断当前循环,没有执行完的次数不再执行

/**
 * 	使用break中断循环  模拟跑步停止
 * 	break
 * 	适用场景:
 * 	switch 表示跳出switch结构
 * 	循环 表示中断当前循环  没有执行完的次数 不再执行
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		for(int i = 1;i <= 10;i++) {
			System.out.println("跑步第"+ i +"圈");
			if(i == 8) {
				System.out.println("太累了,退出比赛");
				break;
			}
		}
		
		System.out.println("程序结束");
		
	}
}
import java.util.Scanner;

/**
 * 	循环录入某学生5门课的成绩并计算平均分,
 * 	如果某分数录入为负,停止录入并提示录入错误
 * @author WHD
 *
 */
public class Test2 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		for(int i = 1;i <= 5;i++) {
			System.out.println("请输入第"+ i +"门成绩");
			int score = input.nextInt();
			if(score < 0) {
				System.out.println("分数录入不正确!");
				break;
			}
		}
		System.out.println("程序结束");
	}
}

5.continue关键字

continue 继续
只能用于循环中,表示跳出本次循环,继续执行下一次循环
break和continue的区别:
1.break可以用于switch或者循环,continue只能用于循环
2.break在循环中表示中断循环,没有执行完的次数不再执行,continue表示跳出本次循环,继续执行下一次

import java.util.Scanner;

/**
 * 	continue 继续
 * 	只能用于循环中 表示跳出本次循环 继续执行下一次循环
 * 	统计分数大于80的学生人数占比
 * 
 * 
 * 	break和continue区别
 * 	应用场景区别:
 * 	1.break可以用于switch或者循环 continue只能用于循环
 * 	2.break在循环中表示中断循环 没有执行完的次数不再执行 continue表示跳出本次循环 继续执行下一次
 * @author WHD
 *
 */
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(count / num * 100 + "%");
			
	}
}
/**
 * 	求1~10之间的所有偶数和 
 * @author WHD
 *
 */
public class Test3 {
	public static void main(String[] args) {
		int sum = 0;
		for(int i = 1;i <= 10;i++) {
			if(i % 2 != 0) {
				continue;
			}
			sum += i;
		}
		System.out.println(sum);
		
		
		
		int sum1 = 0;
		int i = 1;
		while(i <= 10) {
			i++;
			if(i % 2 != 0) {
				continue;
			}
			
			sum1 += i;
			
		}
		System.out.println(sum1);
		
		
		int sum2 = 0;
		int j  = 1;
		do {
			j++;
			if(j % 2 != 0) {
				continue;
			}
			sum2 += j;
		}while(j <= 10);
		
		System.out.println(sum2);
	}
}

6. debug调试

循环结构

7. 多重循环

7.1 打印图案

完成循环变量变化一次,内层循环变量变化一轮
1.外层循环控制行数
2.内层循环控制列数
3.第一行的个数决定了计数器的初始值
4.数量
越来越多 ++ 必须设定一个上限,也就是计数器必须小于或者小于等于某个值
越来越少 -- 必须设置一个下限,也就是计数器必须大于或者大于等于某个值

/**
 * 	使用多重循环打印复杂的图案
 * 	1.外层循环控制行数
 * 	2.内层循环控制列数
 * 	3.第一行的个数决定了计数器的初始值
 * 	4.数量
 * 		越来越多 ++  必须设定一个上限 也就是计数器必须小于 或者 小于等于某个值
 * 		越来越少 --  必须设定一个下限 也就是计数器必须大于 或者 大于等于某个值
 * @author WHD
 *
 */
public class Test3 {
	public static void main(String[] args) {
		for (int i = 1; i <= 5; i++) {
			// 左半部分 倒三角
			for(int j = 5;j >= i;j--) {
				System.out.print("&");
			}
			// 右半部分 矩形
			for(int j =1;j<=5;j++) {
				System.out.print("*");
			}
			// 换行
			System.out.println();
		}
	}
}

/**
 * 	使用多重循环打印正三角形
 * 	分析:
 * 	左半部分 倒三角
 * 	右半部分	直角三角形
 * 
 * 	1.外层循环控制行数
 * 	2.内层循环控制列数
 * 	3.第一行的个数决定了计数器的初始值
 * 	4.数量
 * 		越来越多 ++  必须设定一个上限 也就是计数器必须小于 或者 小于等于某个值
 * 		越来越少 --  必须设定一个下限 也就是计数器必须大于 或者 大于等于某个值
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		for (int i = 1; i <= 5; i++) {
			// 左半部分 倒三角
			for(int j =5;j >= i;j--) {
				System.out.print(" ");
			}
			
			// 右半部分	直角三角形
			// 直角三角形列数 规律 每一行的个数是行号 * 2 -1 
			for(int j = 1;j <= 2 * i - 1;j++) {
				System.out.print("*");
			}
			// 换行
			System.out.println();
			
		}
	}
}

循环结构

上一篇:一、vue基础入门


下一篇:列表中插入元素