public class Test {
public Test(int len) {
int[][] arr = new int[len][len];
int index = 1; for(int k=0;k<=len/2;k++) {
for(int i=k;i<len-k;i++) {
arr[k][i] = index++;
}
for(int i=k+1;i<len - k;i++) {
arr[i][len - 1 - k] = index++;
}
for(int i=len -2-k;i>=k;i--) {
arr[len - 1 - k][i] = index++;
}
for(int i=len -2-k;i>=1+k;i--) {
arr[i][k] = index++;
}
} int maxLen = ("" + len*len).length();
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr[i].length;j++) {
String str = "" + arr[j][i];
for(int k=str.length();k<maxLen;k++) {
str += " ";
}
str += " ";
System.out.print(str);
}
System.out.println();
}
} public static void main(String[] args) {
//边长为10
new Test(10);
}
}
public Test(int len) {
int[][] arr = new int[len][len];
int index = 1; for(int k=0;k<=len/2;k++) {
for(int i=k;i<len-k;i++) {
arr[k][i] = index++;
}
for(int i=k+1;i<len - k;i++) {
arr[i][len - 1 - k] = index++;
}
for(int i=len -2-k;i>=k;i--) {
arr[len - 1 - k][i] = index++;
}
for(int i=len -2-k;i>=1+k;i--) {
arr[i][k] = index++;
}
} int maxLen = ("" + len*len).length();
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr[i].length;j++) {
String str = "" + arr[j][i];
for(int k=str.length();k<maxLen;k++) {
str += " ";
}
str += " ";
System.out.print(str);
}
System.out.println();
}
} public static void main(String[] args) {
//边长为10
new Test(10);
}
}
解决方案 »
- 多态不太明白!求解。
- 关于一个join使用的问题,程序有点麻烦,望那个大侠帮帮忙
- 关于单态类……
- 【高难度】swt table 问题,怎样实现TableColumn跨行,跨列?
- 为什么java里的main在类里啊?
- JCreator Pro代码不能自能弹出代码完成窗口了
- 想学JAVA,但是不知道J2EE、J2SE、J2ME是什么意思?他们有什么区别?学哪个好一些呢?
- 我写了一个界面,有事件处理。我要做的是在这个事件处理中要更新界面,现在问题出来了,java的swing事件处理是在这个事件处理完之后才更
- 我的IE输入form中保存了我以前输入的历史记录,我怎么清除?
- 求一条正则表达式的写法
- 求select取数据问题(在线等)
- 请问如何获得一个JFrame的窗口拖拉和窗口最大化...事件?
程序写的有点死,我想应该有更好的,最起码可以不要数组。但我想不用数组的话,肯定花的时间比较长。所谓空间换时间。
记得给分。