帮忙做个小题,谢谢啦。 有高手在吗?帮同学做个题给定数字n,输出1到n方的数字,输出格式如下如果n=3 输出123894765如果n=4输出1 2 3 412 13 14 511 16 15 610 9 8 7看起来就是盘着输出一样 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 csdn 有这样的帖子,自己去搜搜吧 帮你找了份代码,非原创.import java.util.Scanner;public class Helix { static int record = 1;// 记录每层的起始数字 static int start = 0;// 每层的起始下标 static int end = 0;// 每层的终止下标 static int reduce = 0;// 用于记录减小量 public static void main(String args[]) { Scanner sc=new Scanner(System.in); System.out.println("请输入数字n:"); int n=sc.nextInt(); process(n); } public static void setNum(int n,int[][] arr) {// 递归的为二维数组赋值 if (n > 0) { for (int i = start; i < end; i++) {// 为每层的第一列和最后一列赋值 arr[start][i] = record; arr[end - 1][i] = record + 3 * (n - 1) - 2 * reduce; reduce++; record++; } reduce = 1; for (int i = start + 1; i < end - 1; i++) {// 为每层的第一行和最后一行赋值 arr[i][end - 1] = record; arr[i][start] = record + 3 * (n - 1) - 2 * reduce; reduce++; record++; } reduce = 0; start++; record = record + 2 * (n - 1);// 得到下一层的起始量 end--; setNum(n - 2,arr);// 每递归一次每层边上的数字量减小2 } else return; } public static void process(int n) { int[][] arr = new int[n][n]; String space = " "; end = n; setNum(n,arr); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.print(arr[i][j] + space); } System.out.println();// 输入完一行后要换行 } }} OK了分享一下 改了人家的package com.shou.exam;public class testjz { /** * @param args */ public static void main(String[] args){ testjz tj = new testjz(); tj.test(10); } public void test(int n) { int i,j; int ch=1; int[][] a = new int[n][n]; for(i=0;i<n/2;i++){ for(j=i;j<n-i;j++){ a[i][j]=ch; ch++; } for(j=i+1;j<n-i;j++){ a[j][n-i-1]=ch; ch++; } for(j=n-i-2;j>=i;j--){ a[n-i-1][j]=ch; ch++; } for(j=n-i-2;j>i;j--){ a[j][i]=ch; ch++; } } //输出二维数组 for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(a[i][j]==0){ a[i][j]=n*n; } System.out.print(a[i][j]+" "); } System.out.println(); } } } IBM MQ问题 高手帮我完善一下算法 sql2000 preparedStatement 查询语句出错 System.out.println的使用问题 新手求解 冒泡法 java异常 jBuild eclipse使用策略文件 利用游览器游览applet需要什么配置,或需要注意什么? 因为我一直搞不定,谢!!!! 怎么样得到context ? Java获取网页信息,如何登录弹出弹出的对话框? Java中的按钮,不弹起来,图形界面就不能重绘吗,有没什么好的方法 菜单项event事件方法问题???????
static int start = 0;// 每层的起始下标
static int end = 0;// 每层的终止下标
static int reduce = 0;// 用于记录减小量 public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入数字n:");
int n=sc.nextInt();
process(n);
} public static void setNum(int n,int[][] arr) {// 递归的为二维数组赋值
if (n > 0) { for (int i = start; i < end; i++) {// 为每层的第一列和最后一列赋值
arr[start][i] = record;
arr[end - 1][i] = record + 3 * (n - 1) - 2 * reduce;
reduce++;
record++;
}
reduce = 1;
for (int i = start + 1; i < end - 1; i++) {// 为每层的第一行和最后一行赋值
arr[i][end - 1] = record;
arr[i][start] = record + 3 * (n - 1) - 2 * reduce;
reduce++;
record++;
}
reduce = 0;
start++;
record = record + 2 * (n - 1);// 得到下一层的起始量
end--;
setNum(n - 2,arr);// 每递归一次每层边上的数字量减小2
} else
return;
} public static void process(int n) {
int[][] arr = new int[n][n];
String space = " ";
end = n;
setNum(n,arr);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(arr[i][j] + space);
}
System.out.println();// 输入完一行后要换行
}
}}
package com.shou.exam;
public class testjz { /**
* @param args
*/
public static void main(String[] args){
testjz tj = new testjz();
tj.test(10);
}
public void test(int n) {
int i,j;
int ch=1;
int[][] a = new int[n][n]; for(i=0;i<n/2;i++){
for(j=i;j<n-i;j++){
a[i][j]=ch;
ch++;
}
for(j=i+1;j<n-i;j++){
a[j][n-i-1]=ch;
ch++;
}
for(j=n-i-2;j>=i;j--){
a[n-i-1][j]=ch;
ch++;
}
for(j=n-i-2;j>i;j--){
a[j][i]=ch;
ch++;
}
}
//输出二维数组
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(a[i][j]==0){
a[i][j]=n*n;
}
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
}