ぐるぐる回る

2354 ワード

public class Test 
{
	/**
	 * @param args
	 */
	public Test(int size) 
	{
		if (size > 0)
		{
			iSize = size;
			for (int i = 0; i < size; i++)
			{
				List<Integer> tmp = new ArrayList<Integer>();
				arr.add(tmp);
				for (int j = 0; j < size; j++)
				{
					tmp.add(1);
				}
			}			
			rotate();
		}
	}
	public void print()
	{	
		for (int i= 0; i <iSize; i ++)
		{	
			List<Integer> tmp = arr.get(i);
			for (int j = 0; j < iSize ; j++)
			{				
				System.out.print(format(tmp.get(j)));
			}
			System.out.println();
		}
	}
	
	private String format(Integer i)
	{
		 String sSize = iSize * iSize + " ";
		 
		 int whiteSpace = sSize.length() - i.toString().length();
		 		 
		 String sResult = i.toString();
		 
		 for (int j=0; j < whiteSpace ; j++)
		 {
			sResult += " "; 
		 }
		 return sResult;
	}
	public static void main(String[] args) throws Exception
	{
		//URL url = new URL("file:D:/view1.txt");
		//System.out.println(url.getPath());
		Test t = new Test(9);
		t.print();
	}
	
	private void addCol(int iCount, int flag)
	{
		List<Integer> tmp = arr.get(iRow);
		
		for (int i = 0; i < iCount ; i++)
		{
			iCol = iCol + 1*flag;
			tmp.set(iCol, ++iTick);			
		}
	}
	
	private void addRow(int iCount, int flag)
	{	
		for (int i =0; i < iCount; i++)
		{
			iRow = iRow + 1*flag;
			List<Integer> tmp = arr.get(iRow);
			tmp.set(iCol, ++iTick);			
		}
	}
	
	private void rotate()
	{
		int flag = 1;

		addCol((iSize - 1), flag);

		for (int i = (iSize - 1) ; i > 0 ; i--)
		{
			addRow(i, flag);
			flag = flag * (-1);
			addCol(i, flag);			
		}
	}
	
	private int iTick = 1;
	private int iRow = 0;
	private int iCol = 0;
	private int iSize = 0;
	private List<List<Integer>> arr = new ArrayList<List<Integer>>();
}