循环语句

ygcDiary / 2023-08-14 / 原文

循环语句

For循环

基本语法

for(循环变量初始值;循环条件;循环变量迭代){

​ 代码块;

}

执行流程

image-20230813142122790

注意事项

  1. for循环的初始化变量,循环迭代值,可以放在其他地方。但是分号不能省略。例:for(;循环判断条件;)
  2. 初始值可以定义在循环体之前,迭代值可以写在循环体之内。
  3. for(;;)死循环
  4. 循环初始值可以有多条赋值语句,但是类型要求相同中间使用逗号分隔,循环迭代值也可以有多个值,用逗号分隔

练习

public class For{
	public static void main(String[] args) {
		int sum = 0;
		//打印1-100的整数
		for (int i = 1 ; i <= 100 ; i++) {
			//判断是否能被9整除
			if (i % 9 == 0) {
				System.out.println(i);
				//累加其和
				sum += i;
			}
		}
		System.out.println("总和为:"+sum);//594
	}
}
public class For{
	public static void main(String[] args) {
        /*输出两个数加起来等于5的所有情况
        */
		int sum = 0;
		for (int i = 0; i <= 5 ; i++ ) {
			for (int j = 0 ; j <= 5 ;  j++) {
				sum = i + j;
				if(sum == 5){
					System.out.println("============");
					System.out.println(i+"+"+j+"="+sum);
				}
			}

		}
	}
}

while循环

基本语法

循环变量初始化;

while(条件){

循环体;

循环变量迭代;

}

执行流程

image-20230814102106492

注意事项

  1. 循环条件返回是一个boolean值
  2. while循环是先判断后执行语句

练习

public class For{
	public static void main(String[] args) {
        /*输出1-100能被3整除的数字*/
		int i = 1;
		while (i <= 100) {
			if (i % 3 == 0) {
				System.out.println(i);
			}
			/*迭代值放在if后面,否则无法输出结果,就是死循环*/
			i++;
		}
	}
}
public class For{
	public static void main(String[] args) {
        /*40-200之间的偶数*/
		int i = 40;
		while (i <= 200) {
			if (i % 2 == 0) {
				System.out.println(i);
			}
			/*迭代值放在if后面,否则无法输出结果,就是死循环*/
			i++;
		}
	}
}

do..while循环

基本语法

循环变量初始化

do{

循环体;

循环变量迭代

}while(循环条件);

执行流程

image-20230814104230323

注意事项

  1. do while 是关键字
  2. 也有循环四要素,但是位置不同
  3. 先执行一次循环,后判断,一定会执行一次
  4. 最后有一个分号

练习

public class For{
	public static void main(String[] args) {
		int i = 1;
		int count = 0;
		do{
			if (i % 5 == 0 && i % 3 != 0) {
				System.out.println(i);
				count++;
			}
			/*迭代值放在if后面,否则无法输出结果,就是死循环*/
			
			i++;
		}while (i <= 200);
		System.out.println("满足条件的个数是"+count);
	}
}
import java.util.Scanner;
public class For{
	public static void main(String[] args) {
		/*
		问对方是否还钱,(y/n)如果不还钱接着打(n)还钱就不打了
		 */


		/*接收回答*/
		Scanner input = new Scanner(System.in);
		char answer = ' ';
		do{
			System.out.println("打");
			System.out.println("还钱吗?(y/n)");
			answer = input.next().charAt(0);
			System.out.println("他的回答是"+ answer);
		}while (answer != 'y');
	}
}

双层循环,嵌套循环(难点,重点)

注意事项

  1. 循环嵌套最好不要超过三层,可读性会变得很差
  2. for while do..while都可以作为外层循环和内层循环

练习

import java.util.Scanner;
public class For{
	public static void main(String[] args) {
		/*输出99乘法表*/
		int count = 0;
		int k = 0;
		for (int i = 1 ; i <= 9 ; i++ ) {
			/*j<=i 控制每行的输出个数*/
			for (int j = 1; j <= i ; j++ ) {
				count = i * j;
				/*输出后不换行*/
				System.out.print(i+"*"+j+"="+count +"\t");
			}
			/*每行输出之后换行*/
			System.out.println();
		}
	}
}

import java.util.Scanner;
public class For{
	public static void main(String[] args) {
		/*
		统计三个班级的成绩情况,每个班级有5个学生
		求出各个班级的平均分和所有班级的平均分
		统计三个班及格人数,每个班5人

		 */
		double sum = 0;
		double avg = 0;
		double sum1 = 0;
		double sumAvg = 0;
		int passNum = 0;
		Scanner input = new Scanner(System.in);
		for (int i = 1; i <=3 ; i++ ) {
			for (int j = 1; j <=5 ; j++ ) {
				System.out.println("请输入第"+ i+"个班级的第" + j + "个学生的成绩");
				double score = input.nextDouble();
				sum += score;
				
				if (score > 60) {
					passNum++;
				}
			}
				avg = sum / 5.0;
				sum1 += sum;
				sum = 0;
				System.out.println("第"+ i +"班级的平均分是" + avg);
				sumAvg = sum1 / 15.0;
		}
		System.out.println("所有班级的平均分是" + sumAvg);
		System.out.println("通过的人数是" + passNum);
	}
}

import java.util.Scanner;
public class For{
	public static void main(String[] args) {
		/*
			打印空心金字塔
			    *
			   * *
			  *   *
			 *     *
			*********
		 */
		for (int i = 1; i <= 5 ; i++ ) {
            //打印*之前先打印空格
			for (int k = 1; k <= 5-i ; k++ ) {
					System.out.print(" ");
				}
			for (int j = 1 ; j <= (2*i)-1 ; j++ ) {
				/*第一个位置或最后一个位置输出*号或最后一层输出*号*/
				if (j == 1 || j ==(2*i)-1 || i == 5) {
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
				
			}
            //每行打印结束换行
			System.out.println();
		}
	}
}