Arrays 以随机顺序创建数字为1-16的二维阵列

Arrays 以随机顺序创建数字为1-16的二维阵列,arrays,Arrays,填充方形数组时,我遇到了一个越界异常。我并不真的担心上面的部分,因为我知道这不是最好的方法 public static void main(String[] args) { int[][] square = new int[4][4]; boolean isMagicSquare = true; int[] num = new int[16]; for (int i = 1; i <= num.length; i++) { num[i - 1]

填充方形数组时,我遇到了一个越界异常。我并不真的担心上面的部分,因为我知道这不是最好的方法

public static void main(String[] args) {
    int[][] square = new int[4][4];
    boolean isMagicSquare = true;
    int[] num = new int[16];
    for (int i = 1; i <= num.length; i++) {
      num[i - 1] = i;
    }
    Random rand = new Random();
    for (int i = 0; i < num.length; i++) {
      int randomIndexToSwap = rand.nextInt(num.length);
      int temp = num[randomIndexToSwap];
      num[randomIndexToSwap] = num[i];
      num[i] = temp;
    }
    for (int i = 0; i < num.length; i++) {
      System.out.println(num[i]);
    } {
      for (int col = 1; col <= square.length; col++) {
        for (int row = 1; row <= square.length; row++) {
          square[row][col] = num[((col - 1) * 4 + row) - 1];
        }
      }
publicstaticvoidmain(字符串[]args){
int[][]平方=新int[4][4];
布尔值isMagicSquare=true;
int[]num=新的int[16];
对于(inti=1;i这是因为

for (int row = 1; row <= square.length; row++)
{
square[row][col] = num[((col-1)*4 + row)-1];
因为这个

for (int row = 1; row <= square.length; row++)
{
square[row][col] = num[((col-1)*4 + row)-1];

您没有指定异常,但我假设它在最后一个块中。如果这是Java,数组将被0索引。我已更改最后一个块,使其不应超出数组。您必须确认num[…]计算仍然是您想要的

 for (int col = 0; col < square.length; col++)
 {
       for (int row = 0; row < square.length; row++)
       {
            square[row][col] = num[((col)*4 + row)-1];
       }
 }
for(int col=0;col
您没有指定异常,但我假设它在最后一个块中。如果这是Java,数组将被0索引。我已更改了最后一个块,因此它不应超出数组。您必须确认num[…]计算仍然是您想要的

 for (int col = 0; col < square.length; col++)
 {
       for (int row = 0; row < square.length; row++)
       {
            square[row][col] = num[((col)*4 + row)-1];
       }
 }
for(int col=0;col
当您在第四行到最后一行使用它们时,您不会像在第一个For循环中初始化数组时那样从
中减去一个

您应该在所有循环中使用基于0的索引

public static void main(String[] args) {
    int [][] square = new int[4][4]; 
    boolean isMagicSquare = true;
    int [] num = new int[16];

    for (int i = 0; i <= num.length; i++) {
        num[i] = i;
    }

    Random rand = new Random();

    for (int i = 0; i < num.length; i++) {
        int randomIndexToSwap = rand.nextInt(num.length);
        int temp = num[randomIndexToSwap];
        num[randomIndexToSwap] = num[i];
        num[i] = temp;
    }

    for (int i = 0; i < num.length; i++) {
        System.out.println(num[i]);
    }


    for (int col = 0; col <= square.length; col++) {
        for (int row = 0; row <= square.length; row++) {
            square[row][col] = num[(col*4 + row)];
        }
    }
}
publicstaticvoidmain(字符串[]args){
int[][]平方=新int[4][4];
布尔值isMagicSquare=true;
int[]num=新的int[16];

for(int i=0;i在第四行到最后一行使用它们时,与在第一个for循环中初始化数组时一样,不是从
中减去一

您应该在所有循环中使用基于0的索引

public static void main(String[] args) {
    int [][] square = new int[4][4]; 
    boolean isMagicSquare = true;
    int [] num = new int[16];

    for (int i = 0; i <= num.length; i++) {
        num[i] = i;
    }

    Random rand = new Random();

    for (int i = 0; i < num.length; i++) {
        int randomIndexToSwap = rand.nextInt(num.length);
        int temp = num[randomIndexToSwap];
        num[randomIndexToSwap] = num[i];
        num[i] = temp;
    }

    for (int i = 0; i < num.length; i++) {
        System.out.println(num[i]);
    }


    for (int col = 0; col <= square.length; col++) {
        for (int row = 0; row <= square.length; row++) {
            square[row][col] = num[(col*4 + row)];
        }
    }
}
publicstaticvoidmain(字符串[]args){
int[][]平方=新int[4][4];
布尔值isMagicSquare=true;
int[]num=新的int[16];

对于(int i=0;i),看起来您的代码不应该编译,因为结尾第六行有多余的“{”。请添加语言标记。看起来您的代码不应该编译,因为结尾第六行有多余的“{”。请添加语言标记。