编写一个嵌套的for循环,打印金字塔形输出

具体题目如下图:
编写一个嵌套的for循环,打印金字塔形输出_第1张图片

import java.util.*;
public class printout {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.print("请输入要打印的行数: ");
		int x=sc.nextInt();
		for(int j=1;j<=x;j++) {//这个for循环是用来控制行数
			
				for(int z=1;z<=x-j;z++) {
				System.out.print("    ");
				}
			/*
			 * 上面这个for循环是用来控制每一行前面的空格数的,使其能呈三角形的形状打印出来
			 * 例如第一行打印的是x-1个空格,第二行打印的是x-2个空格依此类推
			 */
				
				
			for(int i=1;i<=j+1;i++) {
				if(i<=j) {
					System.out.printf("%4d",(int)Math.pow(2, i-1));//printf和"%4d"为格式化打印,具体用法请看下文
				}
				else {
					for(int y=j-2;y>=0;y--) {
						System.out.printf("%4d",(int)Math.pow(2,y));
						}
				}
			}
		/*
		 * 上面这个嵌套循环我分为了两部分打印,if中的语句是实现打印前j个数字的顺序打印
		 * 当外层循环i等于j+1时,直接进入else中的for循环实现后面j-1个数字的打印
		 */
			

			System.out.println();//控制一行打完后的换行
			}
		}
	}


打印结果:
编写一个嵌套的for循环,打印金字塔形输出_第2张图片
总结:像这种打印图案的题,要抛开形状,形状都是由空格控制的,难点和重点在于找其中内容的规律。

1、System.out.printf("%4d",int类型数据);
注意小括号中的内容应该严格按照这种格式来写;

2、我最开始因为没重视格式,下面就是我最开始写的:
System.out.printf("%4d",(int)Math.pow(2, i-1)+" “);
括号中只能由”%4d"加上int数据构成,其后可以由多个int数据。

3、其实这道题加了"%4d"也就不用加后面的空格作区分了,这是为什么呢?

答:主要是要理解%4d的含义,就是后面的数字在打印时,必须占四个空格,数字不足四格时会用空格补齐,由于没有数字占位超过四位,所以它们之间依然会有空格分隔。

你可能感兴趣的:(javaSE)