论坛首页 招聘求职论坛

CRM后端JAVA工程师-美团

浏览 23526 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-02-03  
	public static int[][] intary=new int[][]{{ 1 ,2, 3, 4 },{ 5 ,6 ,7, 8 },  
			{ 9 ,10 ,11 ,12 },  
			{13, 14, 15, 16 } };
	
	public static int len=intary.length;
	
	public static void p(int[] local){
		for(int i=0;i<len;i++){
			 if(local[i]>=0&&local[i]<len)
			System.out.print(intary[i][local[i]]+" ");
		}
	}
	
	
	public static void main(String args[]){
		int[] local=new int[len];
		for(int i=0;i<len;i++){
			local[i]=len+i;
		}
		for(int i=0;i<2*len;i++){
			p(local);
			System.out.println();
			for(int j=0;j<len;j++){
				local[j]=local[j]-1;
			}
		}
	}
0 请登录后投票
   发表时间:2015-02-26   最后修改:2015-02-26
需求转换为如何逐行打印如下信息
        // a[0][3]
        // a[0][2],a[1][3]
        // a[0][1],a[1][2],a[2][3]
        // a[0][0],a[1][1],a[2][2],a[3][3]
        // a[1][0],a[2][1],a[3][2]
        // a[2][0],a[3][1],
        // a[3][0]

所以可以根据数组index和数组元素在输出中的横竖坐标抽出规则
这个思路应该最好理解,大众思维....


public class Printer
{

    public static final int ARRAY_LENGTH = 12;

    public static void main(String[] args)
    {

        int[][] a = initArray();

        System.out.println("\n----------------Print-----------------------");
        int totalOutputLineNumber = ARRAY_LENGTH * 2 - 1;
        for (int lineNumber = 1; lineNumber <= totalOutputLineNumber; lineNumber++)
        {
            int columns = columnsforThisLine(lineNumber);

            if (lineNumber <= ARRAY_LENGTH)
            {
                int firstD = 0;
                for (int j = columns - 1; j >= 0; j--)
                {
                    // System.out.print("a[" + firstD + "][" + (3 - j) + "]");
                    System.out.print(a[firstD][(ARRAY_LENGTH - 1 - j)] + " ");
                    firstD++;
                }
                System.out.print("\n");
            }

            if (lineNumber > ARRAY_LENGTH)
            {
                int firstD = lineNumber - ARRAY_LENGTH;
                int secondD = 0;
                for (int j = columns - 1; j >= 0; j--)
                {
                    // System.out.print("a[" + firstD + "][" + secondD + "]");
                    System.out.print(a[firstD][secondD] + " ");
                    firstD++;
                    secondD++;
                }
                System.out.print("\n");
            }
        }
    }

    private static int[][] initArray()
    {
        System.out.println("-----------------Init Array----------------------");
        int a[][] = new int[ARRAY_LENGTH][ARRAY_LENGTH];
        int initialNumber = 1;
        for (int i = 0; i < ARRAY_LENGTH; i++)
        {
            for (int j = 0; j < ARRAY_LENGTH; j++)
            {
                a[i][j] = initialNumber;
                initialNumber++;
            }
        }

        for (int[] is : a)
        {
            for (int i : is)
            {
                System.out.print(i + " ");
            }
            System.out.print("\n");
        }
        System.out.println("---------------------------------------");
        return a;
    }

    private static int columnsforThisLine(int i)
    {
        if (i <= ARRAY_LENGTH)
        {
            return i;
        }
        else
        {
            return ARRAY_LENGTH * 2 - i;
        }
    }
}
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics