主要是每行的输出问题,分别是每行的:空格,数字(包活从小到大跟从大到小),还有没换行结尾的换行符,核心是弄清楚每行空格输出数量跟行的关系,已经数字的起始输出已经结束数字界定等;
核心for循环如下,本人用UltraEdit 测试,完美通过,完美输出,类图片个输出界面也附下面了
for(n=1; n<=5; n++) { //最外层循环控制输出的行数,分别是第一到第五行;
for(i=1; i<=5-n; i++) { //这个循环控制每行前面的空格输出,如:第一个前面输出4个空格;
System.out.print(" ");
}
for(j= 5-n+1; j<=5; j++) { // 这个循环控制中间数字一直到5的输出,如第一行一个5,第二行为4 5
System.out.print(j);
}
for(k=4; k>5-n; k--) { //这个循环控制中间数字5之后的数字,如第一行不输出任何,第二行为4
System.out.print(k);
}
System.out.print("\n"); //这个是本行输出结束之后输出一个换行符
}
public class test {
//大体意思就是用分成5部分输出:空格+递增数字+核心数字+递减数字+空格
public static void main(String[] args) {
int n = 5;//定义变量,想输出以谁为核心的金字塔,这里就写几
//以第一行为例,是4个空格+0个递增+核心+0个递减+4个空格,
//第二行就是,3+1+1+1+3,依此类推
for (int i = 0; i < n; i++) {
//空格
for (int j = i; j < n - 1; j++) {
System.out.print(" ");
}
//递增数字
for (int j = n - i; j < n; j++) {
System.out.print(j);
}
//核心数字
System.out.print(n);
//递减数字
for (int j = n; j > n - i; j--) {
System.out.print(j - 1);
}
//空格
for (int j = i; j < n - 1; j++) {
System.out.print(" ");
}
//换行
System.out.println("");
}
}
}
希望能帮到你。。
public class Test {
public static final int N=5;
public static void main(String[] args) {
// i 表示第几行from 1 to 5
//(N-i)空格+数字(from N-i+1 to n)+(from(N-1) to N-i+1)
for(int i=1;i<=N;i++){
outputSpace(i);
outputNumA(i);
outputNumD(i);
System.out.println();
}
}
//输出空格
public static void outputSpace(int i){
for(int j=1;j<=N-i;j++){
System.out.print(" ");
}
}
//输出数字,由小到大的那一半
public static void outputNumA(int i){
for(int j=N-i+1;j<=N;j++){
System.out.print(j);
}
}
//输出数字,由大到小的那一半
public static void outputNumD(int i){
for(int j=N-1;j>=N-i+1;j--){
System.out.print(j);
}
}
}