回 帖 发 新 帖 刷新版面

主题:一个关于FOR循环的题,求赐教!

题目是要求打印出这样一个图形:
  
                   1
                 1 2 1
               1 2 3 2 1
             1 2 3 4 3 2 1

     求各位写代码,最好是有注释,通俗易懂!

回复列表 (共5个回复)

沙发

public class test {
    public static void main(String[] args) {
        final int Num=4;
        for(int i=1;i<=Num;i++){
            for(int j=1;j<=Num-i;j++){
                System.out.print(" ");
            }
            for(int j=1;j<=i;j++){
                System.out.print(j);
            }
            for(int k=i-1;k>=1;k--){
                System.out.print(k);
            }
            System.out.println();
        }
    }
}
帖子看到的比较晚,不知道还有用没。程序我调好的,楼主可以参考一下,循环不是很复杂,所以就不加注释了。

板凳

import java.*;

public class print
{
    public static int _printNum;

    static
    {
        _printNum = 2;
    }
        
    public static void main(String[] args)
    {
        int i = 0;
    
        for(i = 1; i <= 9; ++i)
        {
            _printNum = i;
            Print();    
        }
    }

    public static void Print()
    {
            for(int j = 1; j < _printNum; ++j)
            {
            
                // 打印空格
                for(int i = 1; i < _printNum - j; ++i)
                {
                    System.out.print(" ");
                }
                // 打印数字
                for(int i = 1; i <= j * 2 - 1; ++i)
                {
                    if(i <= j)
                    {
                        System.out.print(i);
                    }
                    else
                    {
                        System.out.print(j - i % j);
                    }
                }
                System.out.print("\n");
            }
            System.out.print("\n");
    }
}


3 楼


package test;

public class Test1 {
    public static void main(String[] args) {
        for(int i = 1 ; i<=4;i++){
            for(int j = 1 ; j<=3+i;j++){
                //如果是最右边则输出1并结束本行
                if(j == 3+i){
                    System.out.println(1);
                    break;
                }
                if(j<=4){
                    //在j增长到4之前,数字满足j+i-4的规律,小于等于0的为零
                    System.out.print(j+i-4>0?j+i-4:" ");
                }else{
                    //在j大于4时,满足i+4-j的规律,小于等于0的为零
                    System.out.print(i+4-j>0?i+4-j:" ");
                }
            }
        }
    }
}

4 楼

都 是牛人啊,赞个,这种程序纯粹是锻炼下思维的,记得刚学编程语言的时候与写过,现在要马上写出来,还真困难..........

5 楼

public class NumTriangle {
 static int endline=4;//  你可以在这里自定义画多少行这样的数
 static int num=0; 
 static int num(int line, int count){
   return (count<endline ? ++num :--num );
 }
 static String getString(int line, int endline){
    StringBuilder sb= new StringBuilder();
    int count=0;
    final int MAX=2*(endline-1)+1;
    while(count<MAX-(endline-line)){
      sb.append(count<endline-line ? " ":num(line, count));
      count++;
    } 
   return sb.toString(); 
  }
  public static void main(String[] args){
     for (int i=1;i<endline+1; i++){
     System.out.println(getString(i,endline));     
     num=0;
    }
  }  
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册