偶比较笨
看不懂这个算法
import java.io.*;public class Arrayprint
{
private int N;   //矩阵的维数
private int[][] array;
Arrayprint()
{
N = 5;
array = new int[N][N]; 
} Arrayprint(int n)
{
N = n;
array = new int[N][N];
}
public void print()
{
    int i = 0,j = 0,i0 = 0,j0 = 0,count = 1, Num = N-1;
    while(Num>0)
    {
        for(i=i0,j=j0;j<Num;j++,count++)
        {
         array[i][j]=count;
        }
        for(i=i0;i<Num;i++,count++)-------------------------(1)
        {
         array[i][j]=count;
        }
     for(j=Num;j>j0;j--,count++)
     {
     array[i][j]=count;
     }
     for(i=Num;i>i0;i--,count++)------------------------(1)
     {
     array[i][j]=count;
     }
    i0++;
    j0++;
    Num--;
 }
 if(N%2!=0)
 {
  array[N/2][N/2]=count;----------------------------(2)
 }
 
    
    for( i=0;i<N;i++){
       for( j=0;j<N;j++){
           String ar = "0";
           if(array[i][j]/10<1) ar="  "+array[i][j];
           else if((array[i][j]/100<1)&&(array[i][j]/10>1)){
           ar=""+array[i][j];
           }
           System.out.print(ar+" ");
          }
          System.out.println();
          }
        }
    public static void main(String[] args) throws IOException
    {
     int order = 0;
     System.out.println("Please input the order of the square:(<10)");
     order =  System.in.read();
     order =  order-'0';
     Arrayprint arr = new Arrayprint(order);
     arr.print();
    }
    
}
两个(1)之间的循环是怎么回事呢?看不懂
(2)为什么是奇数的时候要用到这句?
请高手帮忙指点.谢谢

解决方案 »

  1.   

    for(i=i0;i<Num;i++,count++)-------------------------(1)
            {
             array[i][j]=count;
            }
    这个循环里面只管i 但是j是怎么走的呢??
    j一直保持什么值呢?还是怎样?
      

  2.   

    to honeysuckle1(无与伦比) ,
    我不是说了吗:
    从00开始,先向下到04,再横着到44,再上去到40,最后回到00,然后开始中间的一层,到最后。
    你找张纸画一下就OK了。
      

  3.   

    对呀,上一次执行到j=4,j就没有变化呀,之后的i也是这个道理。