黑马程序员技术交流社区
标题:
求大神解入学测试题
[打印本页]
作者:
ls20090726
时间:
2016-4-26 19:23
标题:
求大神解入学测试题
8、写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
作者:
BackGaoz
时间:
2016-4-26 23:13
package com.heima.test;
import java.util.Arrays;
import java.util.Scanner;
public class Test6 {
/*
* 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。
* 如: n = 4 则打印
* 1 2 3 4 i不变j++
12 13 14 5 j不变i++
11 16 15 6 i不变j--
10 9 8 7 j不变i-- i++ j++
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字");
int i = sc.nextInt();
int[][] arr = new int[i][i];
printArray(arr);
}
public static void printArray(int[][] arr) {
int i = 0,j = 0; //两个变量用于控制二维数组的索引
int num = 1; //用于赋值
int max = arr.length - 1,min = 0 ; //用来控制i,j的变化
while(min <= max) {
//向右开始添加元素
while(j < max) {
arr[i][j++] = num++;
}
//向下开始添加元素
while(i < max) {
arr[i++][j] = num++;
}
//向左添加元素
while(j > min) {
arr[i][j--] = num++;
}
//向上开始添加元素
while(i > min) {
arr[i--][j] = num++;
}
//如果说我们输入的值为奇数时,最中心的数通过上面的代码添加不上元素,所有做个判断.
if (min == max) {
arr[i][j] = num;
}
//向上添加元素的时候,i索引多--了一次
i++;
//因为每个一维数组的j索引都已经添加过了元素,所以j索引要++
j++;
//while的循环条件也要随之变化,由外向内添加元素的话,每一圈下来都要执行
max--;
min++;
}
//这个是将二维数组转换为标准格式的代码,我开始没注意题目要求的打印方式,就没写.
//打印方式挺简单,楼主可以自己写写.
/*String line = "";
for (int k = 0; k < arr.length; k++) {
for (int k2 = 0; k2 < arr[k].length; k2++) {
if (k == 0 && k2 == 0) {
line = "{[" + arr[k][k2] + ",";
}else if(k2 == 0) {
line = line + "[" + arr[k][k2] + ",";
}else if(k == arr.length - 1 && k2 == arr[k].length - 1) {
line = line + arr[k][k2] + "]}";
}else if(k2 == arr[k].length - 1) {
line = line + arr[k][k2] + "],";
}else {
line = line + arr[k][k2] + ",";
}
}
}
System.out.println(line);*/
}
}
复制代码
作者:
z736886202
时间:
2016-4-27 00:09
围观一下大神
作者:
saiqqww234
时间:
2016-4-27 00:31
学习学习
作者:
liuqjss
时间:
2016-4-27 11:55
围观,学习啦
作者:
320215787
时间:
2016-4-27 12:17
围观大神,这个一直写不出,长知识了
作者:
349153256
时间:
2016-4-27 12:53
强势围观
作者:
xiaoxiqq
时间:
2016-4-27 17:28
完全看不懂题意怎么办
作者:
ls20090726
时间:
2016-4-27 18:50
膜拜啊!!!!!!!!!!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2