首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

java 中如何实现在控制台上实现下面的这个效果?求教?

2012-04-21 
java 中怎么实现在控制台上实现下面的这个效果?求教??12341213145111615610987[解决办法]试着写了一个,供

java 中怎么实现在控制台上实现下面的这个效果?求教??
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

[解决办法]
试着写了一个,供你参考,能够实现的方法肯定还有很多。
public static void main(String[] args) {
int m = 3; //m+1 列
int n = 3; //n+1 行
int[][] temp = new int[m + 1][n + 1];

int i = 0; //二维数组横坐标
int j = 0; //二维数组纵坐标
int num = 1; //往数组里添的值 从1开始,到(m + 1) * (n + 1)

int x = 1; //坐标递增 
int y = 0; //纵坐标变化 
int t = 0; //由外向内第0圈

while (num <= (m + 1) * (n + 1)) {

temp[i][j] = new Integer(num).intValue();

//当y等于0时 i 不变化 turn(y)=1 所以 j会变化
//当x等于1时 坐标递增,x等于-1时 坐标递减
i += x * y;
j += x * turn(y);

//回到左上角 i,j都加1 由外向内进入下一圈,横坐标开始变化,坐标递增
if (i == j && i == t) {
t++;
i++;
j++;
x = 1;
y = 0;
}
//到达右上角,纵坐标开始变化
if (i == t && j == n - t) {
y = 1;
}
//到达左下角,纵坐标开始变化
if (i == m - t && j == t) {
y = 1;
}
//到达右下角,横坐标开始变化,坐标递减
if (i == m - t && j == n - t) {
x = -1;
y = 0;
}
num++;
}

//循环打印
for (int ii = 0; ii < (m + 1); ii++) {
for (int jj = 0; jj < (n + 1); jj++) {
System.out.print(temp[ii][jj] + "\t");
}
System.out.println("");
}
}

//转换方法,当一个坐标轴变化的时候另一个不变化
static int turn(int x) {
if (x == 1) {
return 0;
} else {
return 1;
}
}
m和n变化时可以输出不同的效果。

1234
1213145
1116156
10987


12345
141516176
132019187
12111098

1234
1415165
1320176
1219187
111098


12345
161718196
152425207
142322218
131211109

热点排行