我们先做个发动机
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 版权协议,转载请附上原文出处链接和本声明。