黑马程序员技术交流社区

标题: 根据现象写代码 [打印本页]

作者: 王家胜    时间: 2013-12-1 22:00
标题: 根据现象写代码
本帖最后由 王家胜 于 2013-12-1 22:17 编辑

输入1输出
1
输入2输出
1      2
3
输入3输出
1        2        3        
6        4        
5        
输入4输出
1        2        3        4        
9        10        5        
8        6        
7
以此类推输入n,输出n行n列且以三角环连续递增输出
如输入9输出
1        2        3        4        5        6        7        8        9        
24        25        26        27        28        29        30        10        
23        39        40        41        42        31        11        
22        38        45        43        32        12        
21        37        44        33        13        
20        36        34        14        
19        35        15        
18        16        
17
作者: 珊湖礁    时间: 2013-12-1 22:04
import java.util.Scanner;   public class Test4  {         int date[][]=null;         public static void main(String[] args)          {                          Test4 test=new Test4();                 int n=test.getInput();//获取一个数                 test.createArray(n);//分配内存                 test.Caozuo(n);//计算                 test.Output(n);//输出                          }                 public int getInput()         {                 Scanner s=new Scanner(System.in);                 return s.nextInt();//获取一个数         }         public void createArray(int n)         {                 date=new int[n][];                 for(int i=0;i<n;i++)//输入                 {                         date[i]=new int[n-i];                 }         }         public void Output(int n)         {                 for(int i=0;i<n;i++)//输出                 {                         for(int j=0;j<date[i].length;j++)                         {                                 System.out.print(date[i][j]+"\t");                         }                         System.out.println();                 }         }         public void Caozuo(int n)         {                 int number=1;                 int xunhuan=n/3+1;//暂时不知到xunhuan取值为什么最好,按规律设置的                 for(int m=0;m<xunhuan;m++)                 {                         for(int i=m;i<n-2*m;i++)//横向                         {                                 date[m][i]=number;                                 number++;                         }                         for(int i=1+m;i<n-2*m;i++)//斜向                         {                                 date[i][n-i-1-m]=number;                                 number++;                         }                         for(int i=n-2-2*m;i>m;i--)//竖向                         {                                 date[i][m]=number;                                 number++;                         }                 }         } }
作者: 珊湖礁    时间: 2013-12-1 22:04
import java.util.Scanner;


public class Test4
{
        int date[][]=null;
        public static void main(String[] args)
        {
       
                Test4 test=new Test4();
                int n=test.getInput();//获取一个数
                test.createArray(n);//分配内存
                test.Caozuo(n);//计算
                test.Output(n);//输出
               
        }       
        public int getInput()
        {
                Scanner s=new Scanner(System.in);
                return s.nextInt();//获取一个数
        }
        public void createArray(int n)
        {
                date=new int[n][];
                for(int i=0;i<n;i++)//输入
                {
                        date[i]=new int[n-i];
                }
        }
        public void Output(int n)
        {
                for(int i=0;i<n;i++)//输出
                {
                        for(int j=0;j<date[i].length;j++)
                        {
                                System.out.print(date[i][j]+"\t");
                        }
                        System.out.println();
                }
        }
        public void Caozuo(int n)
        {
                int number=1;
                int xunhuan=n/3+1;//暂时不知到xunhuan取值为什么最好,按规律设置的
                for(int m=0;m<xunhuan;m++)
                {
                        for(int i=m;i<n-2*m;i++)//横向
                        {
                                date[m][i]=number;
                                number++;
                        }
                        for(int i=1+m;i<n-2*m;i++)//斜向
                        {
                                date[i][n-i-1-m]=number;
                                number++;
                        }
                        for(int i=n-2-2*m;i>m;i--)//竖向
                        {
                                date[i][m]=number;
                                number++;
                        }
                }
        }
}

作者: 王家胜    时间: 2013-12-1 22:10
好,答案很完美,完全符合要求!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2