用java的for循环编写程序,输出以下数字金字塔,最好带注释。

5
454
34543
2345432
123454321

主要是每行的输出问题,分别是每行的:空格,数字(包活从小到大跟从大到小),还有没换行结尾的换行符,核心是弄清楚每行空格输出数量跟行的关系,已经数字的起始输出已经结束数字界定等;

 

核心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");    //这个是本行输出结束之后输出一个换行符

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-02
package test;

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("");
}

}

}
希望能帮到你。。
第2个回答  2013-08-02
 
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);
  }
 }
}