黑马程序员技术交流社区
标题: 求解 [打印本页]
作者: 未来希望 时间: 2014-1-3 02:07
标题: 求解
从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:
输入数字2,则程序输出:
1 2
4 3
输入数字3,则程序输出:
1 2 3
8 9 4
7 6 5
输入数字4, 则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
作者: 浮出一个美 时间: 2014-1-3 07:16
楼主辛苦了。
- package com.heima.bbs;
- /**
- * 从键盘输入一个整数(1~20)
- 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:
- 输入数字2,则程序输出:
- 1 2
- 4 3
- 输入数字3,则程序输出:
- 1 2 3
- 8 9 4
- 7 6 5
- 输入数字4, 则程序输出:
- 1 2 3 4
- 12 13 14 5
- 11 16 15 6
- 10 9 8 7
- */
- import java.util.Scanner;
- public class Demo7 {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入一个1~20的整数:");
- int n = sc.nextInt();
- while(n<1 || n>20){
- System.out.println("输入错误,请输入一个1~20的整数:");
- n = sc.nextInt();
- }
- int up = 0;
- int down = n - 1;
- int left = 0;
- int right = n-1;
- int num = 1;
- int[][] arr = new int[n][n];
- while(down>=up && right>=left){
- for(int i=left;i<=right;i++){
- arr[up][i] = num;
- num++;
- }
- up++;
- for(int i=up;i<=down;i++){
- arr[i][right] = num;
- num++;
- }
- right--;
- for(int i = right;i>=left;i--){
- arr[down][i] = num;
- num++;
- }
- down--;
- for(int i=down;i>=up;i--){
- arr[i][left] = num;
- num++;
- }
- left++;
- }
- for(int i=0;i<arr.length;i++){
- for(int j=0;j<arr.length;j++){
- if(arr[i][j]<10){
- String s = Integer.toString(arr[i][j]);
- if(j==(arr.length-1)){
- System.out.print(s);
- }else{
- System.out.print(s+"\t");
- }
- }else{
- if(j==(n-1)){
- System.out.print(arr[i][j]);
- }else{
- System.out.print(arr[i][j]+"\t");
- }
- }
- if(j==n-1){
- System.out.println();
- }
- }
- }
- }
- }
复制代码
作者: 未来希望 时间: 2014-1-3 09:15
楼上正解啊 ,谢谢 大虾{:soso_e163:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |