思路:
1 第一次先写出来了外层,慢慢饶进内层
2 先写第一个步骤注释其他三个步骤,然后写第二个步骤,注释其他步骤,重复
3 然而这个是偶数,下面是写一个判断是奇数的时候
//如果是奇数,加一个中间的数字 (k-1)/2
if(k%2!=0)
arr[ (k-1)/2][ (k-1)/2]=k*k;
第一步:
package test01;
import java.util.Scanner;
public class no04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i ;
int j ;
int a,b,c,d,k;
// Scanner out = new Scanner(System.in);
// System.out.println("输入一个int型数据:");
// k= out.nextInt();
// System.out.println(k);
k=4;
a=1;
int arr[][] = new int [k][k];
//for(j=0;j<k/2;j++)
//{
//1
for(i=0;i<k;i++)
{
arr[0][i] = a++;
}
//2
for(i=1;i<k;i++)
{
arr[i][k-1]=a++;
}
//3
for(i=k-2;i>=0;i--)
{
arr[k-1][i]=a++;
}
//4
for(i=k-2;i>0;i--)
{
arr[i][0]=a++;
}
//循环结束
//}
//输出
for(j=0;j<k;j++)
{
for(i=0;i<k;i++)
{
System.out.print(arr[j][i]);
System.out.print("|");
}
System.out.println();
}
}
}
打印结果:
1|2|3|4|
12|0|0|5|
11|0|0|6|
10|9|8|7|
然后继续;先写第一个步骤注释其他三个步骤,然后写第二个步骤,注释其他步骤,重复
package test01;
import java.util.Scanner;
public class no04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i ;
int j ;
int a,b,c,d,k;
// Scanner out = new Scanner(System.in);
// System.out.println("输入一个int型数据:");
// k= out.nextInt();
// System.out.println(k);
k=6;
a=1;
int arr[][] = new int [k][k];
for(j=0;j<(k/2);j++)
{
//1
for(i=j;i<k-j;i++)
{
arr[j][i] = a++;
}
//2
for(i=1+j;i<k-j;i++)
{
arr[i][k-1-j]=a++;
}
//3
for(i=k-2-j;i>=j;i--)
{
arr[k-1-j][i]=a++;
}
if(a>=(k*k))
break;
//4
for(i=k-2-j;i>j;i--)
{
arr[i][j]=a++;
}
//循环结束
}
//输出
for(j=0;j<k;j++)
{
for(i=0;i<k;i++)
{
if(arr[j][i]<10)
{
System.out.print(arr[j][i]+" ");
//System.out.print("|");
}
else
System.out.print(arr[j][i]);
System.out.print("|");
}
System.out.println();
}
}
}
打印结果
1 |2 |3 |4 |
12|13|14|5 |
11|16|15|6 |
10|9 |8 |7 |
然而这个是偶数,下面是写一个判断是奇数的时候
//如果是奇数,加一个中间的数字 (k-1)/2
if(k%2!=0)
arr[ (k-1)/2][ (k-1)/2]=k*k;