Java 按螺旋顺序打印二维阵列

Java 按螺旋顺序打印二维阵列,java,arrays,spiral,Java,Arrays,Spiral,可能重复: 如何使用JAVA以螺旋顺序打印二维数组?请帮忙,我不知道 示例阵列: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 输出: 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 以下是我尝试过的: 公共静态void main(字符串[]args){ int[][]值={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}; 对于(inti=(values.leng

可能重复:

如何使用JAVA以螺旋顺序打印二维数组?请帮忙,我不知道

示例阵列:

1  2  3  4

5  6  7  8

9  10 11 12

13 14 15 16
输出:

1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
以下是我尝试过的:

公共静态void main(字符串[]args){

int[][]值={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16};
对于(inti=(values.length*values[0].length)-1,j=0;i>0;i--,j++){
对于(int k=j;kj;k--){
系统输出打印(值[i][k]);
}
对于(int k=i;k>j;k--){
系统输出打印(值[k][j]);
}
}
}
无效打印螺旋线(int[]arr,int size)
{
对于(int l=0;lmin;i--)
System.out.print(“\t”+arr[i][max].ToString());
对于(int j=max;j>min;j--)
System.out.print(“\t”+arr[min][j].ToString());
}
//中心为特例:避免打印4次。
如果(大小%2==1)
System.out.print(“\t”+arr[size/2][size/2].ToString());
}
(免责声明:仅在C#上试用)

void PrintSpiral(int[]arr,int size)
{
对于(int l=0;lmin;i--)
System.out.print(“\t”+arr[i][max].ToString());
对于(int j=max;j>min;j--)
System.out.print(“\t”+arr[min][j].ToString());
}
//中心为特例:避免打印4次。
如果(大小%2==1)
System.out.print(“\t”+arr[size/2][size/2].ToString());
}

(免责声明:仅在C#上试用过)

以下是一些Java解决方案:

public static final int X_SIZE = 4;
public static final int Y_SIZE = 4;

public static void main(String[] args) {
    int[][] array = new int[X_SIZE][Y_SIZE];

    for(int i = 0; i < X_SIZE; i++){
        for (int j = 0; j < Y_SIZE; j++){
            array[i][j] = i * X_SIZE + (j + 1);
            System.out.print(array[i][j] + " ");
        } 
        System.out.println();
    }

    System.out.println("************");
    System.out.println("Spiral");       

    spiralPrint(X_SIZE, Y_SIZE, array);
}

public static void spiralPrint(int xSize, int ySize, int matrix[][]){
    int i,  k = 0, l = 0;
    xSize--;  ySize--;      

    while(k <= xSize && l <= ySize){
        for(i = l; i <= ySize; ++i) {
            System.out.print(matrix[k][i]+ " ");
        }           
        k++;

        for(i = k; i <= xSize; ++i) {
            System.out.print(matrix[i][ySize] + " ");
        }
        ySize--;

        for(i = ySize; i >= l; --i) {
                System.out.print(matrix[xSize][i] + " ");
        }
        xSize--;


        for(i = xSize; i >= k; --i) {
            System.out.print(matrix[i][l] + " ");
        }
        l++;
    }
}
public static final int X_SIZE=4;
公共静态最终整数Y_大小=4;
公共静态void main(字符串[]args){
int[][]数组=新int[X_大小][Y_大小];
对于(int i=0;i而(k以下是一些Java解决方案:

public static final int X_SIZE = 4;
public static final int Y_SIZE = 4;

public static void main(String[] args) {
    int[][] array = new int[X_SIZE][Y_SIZE];

    for(int i = 0; i < X_SIZE; i++){
        for (int j = 0; j < Y_SIZE; j++){
            array[i][j] = i * X_SIZE + (j + 1);
            System.out.print(array[i][j] + " ");
        } 
        System.out.println();
    }

    System.out.println("************");
    System.out.println("Spiral");       

    spiralPrint(X_SIZE, Y_SIZE, array);
}

public static void spiralPrint(int xSize, int ySize, int matrix[][]){
    int i,  k = 0, l = 0;
    xSize--;  ySize--;      

    while(k <= xSize && l <= ySize){
        for(i = l; i <= ySize; ++i) {
            System.out.print(matrix[k][i]+ " ");
        }           
        k++;

        for(i = k; i <= xSize; ++i) {
            System.out.print(matrix[i][ySize] + " ");
        }
        ySize--;

        for(i = ySize; i >= l; --i) {
                System.out.print(matrix[xSize][i] + " ");
        }
        xSize--;


        for(i = xSize; i >= k; --i) {
            System.out.print(matrix[i][l] + " ");
        }
        l++;
    }
}
public static final int X_SIZE=4;
公共静态最终整数Y_大小=4;
公共静态void main(字符串[]args){
int[][]数组=新int[X_大小][Y_大小];
对于(int i=0;iwhile(k)related:这是做作业用的吗?到目前为止你试过什么?related:这是做作业用的吗?到目前为止你试过什么?这是坏的,只有当矩阵宽度等于高度时才起作用。这是坏的,只有当矩阵宽度等于高度时才起作用
public static final int X_SIZE = 4;
public static final int Y_SIZE = 4;

public static void main(String[] args) {
    int[][] array = new int[X_SIZE][Y_SIZE];

    for(int i = 0; i < X_SIZE; i++){
        for (int j = 0; j < Y_SIZE; j++){
            array[i][j] = i * X_SIZE + (j + 1);
            System.out.print(array[i][j] + " ");
        } 
        System.out.println();
    }

    System.out.println("************");
    System.out.println("Spiral");       

    spiralPrint(X_SIZE, Y_SIZE, array);
}

public static void spiralPrint(int xSize, int ySize, int matrix[][]){
    int i,  k = 0, l = 0;
    xSize--;  ySize--;      

    while(k <= xSize && l <= ySize){
        for(i = l; i <= ySize; ++i) {
            System.out.print(matrix[k][i]+ " ");
        }           
        k++;

        for(i = k; i <= xSize; ++i) {
            System.out.print(matrix[i][ySize] + " ");
        }
        ySize--;

        for(i = ySize; i >= l; --i) {
                System.out.print(matrix[xSize][i] + " ");
        }
        xSize--;


        for(i = xSize; i >= k; --i) {
            System.out.print(matrix[i][l] + " ");
        }
        l++;
    }
}