用Java语言码一个字母金字塔

  • Post author:
  • Post category:java


我们先做个发动机

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][] letter =new int[5][5*5-1];        //
		for(int i=0;i<5;i++) {
			System.out.format("%" + (5 - i)*7  + "s", "");	//循环排序字母
			for(int j=0;j<i+i-1;j++) {
				letter[i][j]=1;								
				if(j!=0 && j!=i+i-2)  //如果j的值不为0 和最右边的数
				     letter[i][j]=letter[i-1][j-1];		//其他值就加1
				System.out.printf("%d(%d,%d) ",letter[i][j],i,j);
			}
			System.out.println();
	}
	}

在这里插入图片描述

如图所示,发动机做好了,我们给他加个外壳,再做个逆序

import java.util.Scanner;

/**
 * 
 */

/**
 * @author Charles
 *字母金字塔
 */
public class LetterPyramid {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        int letter=scannerLetterPyramid();				//获取用户输入的字符
         
        if(letter!=0) {									//如果字符值不为零,进行输出
		     printfPSLetterPyramid(letter);				//正序输出
              printROLetterPyramid(letter);				//逆序输出
        }
        else											//如果字符值为零,提示用户输入错误
        	 System.out.println("输入字符不合法");
          
	}
	/**
	 * 获取用户输入的字符
	 * @return
	 * 用户输入的中央字母
	 */
	public static int scannerLetterPyramid() {
		Scanner scanner=new Scanner(System.in);
		System.out.println("请输入中央字符:  ");
		String letter=scanner.nextLine();
		char charletter=letter.charAt(0);
		int intletter=(int)(charletter);				//把用户输入的首字符转化为数字型
		
		if(intletter>=97 &&intletter<=122)				//如果用户输入的是小写字母,转换为大写字母
			intletter-=32;
	    if (intletter<65 || intletter>90)				//如果用户输入的不是字母,返回值为 0
        	return 0;
	     return intletter;
	}
	/**
	 * 输出字母金字塔为正序
	 * @param isnumber
	 * 用户输入的中央字母
	 */
	public static void printfPSLetterPyramid(int isnumber) {
		int number=isnumber-63;									//字母A为1,Z为26
		int[][] letter =new int[number][number*2-1];			//生成number行,number*2-1列的数组
		
		System.out.println("正序输出:");
		for(int i=0;i<number;i++) {
			System.out.format("%" + (number - i)  + "s", "");	//循环排序字母
			for(int j=0;j<i+i-1;j++) {
				letter[i][j]=65;								
				if(j!=0 && j!=i+i-2)   letter[i][j]=letter[i-1][j-1]+1;		//每次循环判定为真,数组值加 1
//				System.out.printf("%d(%d,%d)",letter[i][j],i,j);
				System.out.print((char)(letter[i][j]));			//把数值转为字母输出
			}
			System.out.println();
		}
		System.out.println();
	}
	/**
	 * 输出字母金字塔为倒序
	 * @param isnumber
	 * 用户输入的中央字母
	 */
	public static void printROLetterPyramid(int isnumber) {
		int number=93-isnumber-1;							//字母A为26,Z为1
		int[][] letter =new int[number][number*2-1];		//生成number行,number*2-1列的数组
		
		System.out.println("逆序输出:");
		for(int i=0;i<number;i++) {
			System.out.format("%" + (number - i)  + "s", "");	//循环排序字母
			for(int j=0;j<i+i-1;j++) {
				letter[i][j]=90;
				if(j!=0 && j!=i+i-2)   letter[i][j]=letter[i-1][j-1]-1;		//每次循环判定为真,数组值减 1
//				System.out.printf("%d(%d,%d)",letter[i][j],i,j);
				System.out.print((char)(letter[i][j]));			//把数值转为字母输出
			}
			System.out.println();
		}
		System.out.println();
	}
    

}

运行一下

在这里插入图片描述



版权声明:本文为Charleslidi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。