java中的多层循环控制,包括金字塔和九九乘法表的打印

多重循环控制

多重循环控制

1.将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for,while,do…while均可以作为外层循环和内层循环。【建议一般用两层,最多不要超过3层,否则代码的可读性很差】
2.实际上,嵌套循环就是把内存循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内存循环,才可结束外层的当次循环,开始下一次的循环。
3.设外层循环次数为m次,内存为n次,则内层循环体实际上需要执行m*n次。

for(int i = 1; i <= 7; i++){  //循环7次
	for(int j = 1; j <= 2; j++){  //循环2次
		System.out.println("ok");  //循环7*2=14次
	}
}

练习

统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分,并统计三个班及格人数

import java.util.Scanner;
public class ForTest{
	public static void main(String[] args){

	 // 统计3个班成绩情况,每个班有5名同学,
	 // 求出各个班的平均分和所有班级的平均分,
	 // 并统计三个班及格人数
	 // 1.化繁为简,先统计1个班成绩情况
	 // 2.Scanner键盘输入,double score接收键盘输入
	 // 3.for循环嵌套,执行三次(统计1个班成绩情况),用sum接收每个班总分,每次结束清零
	 // 4.用total_score来接收三个班总分
	 // 5.int count = 0;统计及格人数

	Scanner sc = new Scanner(System.in);
	double total_score = 0; //收集三个班的总分
	int count = 0;
	for(int i = 1;i <= 3; i++){
		double sum = 0;
		for(int j = 1; j <= 5; j++){	//统计一个班的五名同学成绩,j表示同学
			System.out.println("请输入" + i + "班第" + j +"名同学成绩:");
			double score = sc.nextDouble();
			System.out.println(i + "班第"+ j + "名同学成绩为:" + score + "\n");
			if(score >= 60){
				count++;
			}
			sum +=score;   //求一个班的总分,每次结束内层循环自动清零double sum = 0;
			total_score +=score;

		}
		System.out.println(i + "班总分为:" + sum + "平均分为:" + (sum / 5)); //输出一个班的总分和平均分
		
	}
	System.out.println("三个班的总分为:" + total_score +
		"平均分为:" + (total_score / 15));
	System.out.println("及格人数为:" + count);

		
 }
}

打印金字塔

import java.util.Scanner;
public class ForTest{
	public static void main(String[] args){

	/*打印
	*
	**
	***
	****
	*****
	 */	
	
	//化繁为简先打印出
	/*
	*****  5行5列矩形
	*****
	*****
	*****
	*****
	 */
	
	//进一步打印出半个金字塔
	/*
	i表示行数
	*       第1行,1个*
	**		第2行,2个*
	***		第3行,3个*
	****	第4行,4个*
	*****	第5行,5个*
	
	 */
	
	//打印整个金字塔
	/*
	    *        第1行,(2*i)-1=1个*   前有4个空格   (总行数5 - i)个空格
	   ***		 第2行,(2*i)-1=3个*	前有3个空格
	  *****		 第3行,(2*i)-1=5个*   前有2个空格
	 *******	 第4行,(2*i)-1=7个*   前有1个空格
	*********	 第5行,(2*i)-1=9个*   前有0个空格 
	 */

	//打印镂空金字塔
	/*
		*        第1行,1个*   前有(总行数5 - i)=4个空格   
	   * *		 第2行,2个*	  前有3个空格
	  *   *		 第3行,2个*   前有2个空格
	 *     *	 第4行,2个*   前有1个空格
	*********	 第5行,9个*   前有0个空格
	 首尾都是*,中间为空
	 */
	
	 Scanner sc = new Scanner(System.in);
	 System.out.println("请输入行数(整数):");
	 int total_hang = sc.nextInt();


	for(int i = 1;i <= total_hang;i++){ //i表示行数
		//控制打印每层*的个数
		for(int k = 1;k <= (total_hang - i);k++){   //空格的位置
			System.out.print(" ");
		}

			for(int j = 1;j <=2 * i - 1;j++){   //j表示*的第几个位置
				if(j == 1 || j == 2 * i - 1 || i == total_hang){
					System.out.print("*");
				}
				else{
					System.out.print(" ");
				}
			}
		//每打印完一层*就换行
		System.out.println("");
	}

 }
}
打印九九乘法表

在这里插入图片描述

public class test{
	public static void main(String[] args){

	for(int i = 1;i <= 9;i++){ //i表示行数
		for(int j = 1; j <= i;j++){
			System.out.print(i + "*" + j + "=" + i * j + "\t");
		}
	//打印完自动换行
	System.out.println("");	
	}
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值