[Java] 纯文本查看 复制代码
public static void demo9() {
Scanner sc = new Scanner(System.in);
System.out.println("请选择方阵长度");
int end = sc.nextInt();
int start = 0;
//int end = 4;
int count = 0;
int[][] arr = new int[end][end];
//调用方法赋值
demo9_text(arr,start,end,count,end*end);
//打印二维数组
for(int i = 0 ; i < arr.length ; i ++) {
for(int j = 0 ; j < arr.length ; j ++) {
System.out.print(arr[j]+"\t");
}
System.out.println();
}
}
//五个参数,数组,本圈开始索引,本圈最大索引,要填写数字,最大(终止)数字
private static void demo9_text(int[][] arr,int start,int end,int count,int ends) {
//打印第一横行
for(int i = start ; i < end ; i ++) {
count ++;
arr[start] = count;
}
if(count == ends) {
return;
}
//右纵行
count --;
for(int i = start;i < end ; i ++) {
count++;
arr[end-1] = count;
}
//下横行
count--;
for(int i = end-1;i > start-1;i--) {
count ++;
arr[end-1] = count;
}
if(count == ends) {
return;
}
//左纵行
count --;
for(int i = end - 1 ; i >start;i --) {
count ++;
arr[start] = count;
}
demo9_text(arr,start + 1,end - 1,count,ends);
}
[AppleScript] 纯文本查看 复制代码
package com.heima.demo;
import java.util.Scanner;
public class Demo_09 {
/**
*写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
* 1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
*/
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("输入要打印成螺旋数组的个数");
int n=sc.nextInt();
int[][] arr=new int[n][n];
Method(arr);
for(int i=0;i<arr.length;i++){
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j]+"\t");
}
System.out.println("");
}
}
private static void Method(int[][] arr) {
int i=0;
int j=0;
int max=arr.length-1;
int min=0;
int value=1;
System.out.println(max);
while(min<=max){
while(j<max){//j++向右
arr[j++]=value++;
}
while(i<max){//i++向下
arr[i++][j]=value++;
}
while(j>min){//j--向左
arr[j--]=value++;
}
while(i>min){//i--向上
arr[i--][j]=value++;
}
if(min==max){//传入的二维数组是奇数时,给定最中间的值
arr[j]=value;
}
i++;//起始点变更
j++;
max--;//循环一次,循环范围缩小一次
min++;
}
}
}