在Java中将列表传递到二维数组

在Java中将列表传递到二维数组,java,arrays,arraylist,Java,Arrays,Arraylist,我正在尝试编写一个方法,使用我创建的列表填充二维数组。请原谅我,因为这显然是非常基本的Java,而且我还是个新手。这是我的密码: import java.util.*; public class MagicSquare { static final int rows = 4; static final int columns = 4; static final int listSize = 16; static int row, col; static Scanner console = n

我正在尝试编写一个方法,使用我创建的列表填充二维数组。请原谅我,因为这显然是非常基本的Java,而且我还是个新手。这是我的密码:

import java.util.*;

public class MagicSquare 
{
static final int rows = 4;
static final int columns = 4;
static final int listSize = 16;
static int row, col;
static Scanner console = new Scanner (System.in);

public static void createArithmeticSeq(int [] list)
{   
    int first; 
    int diff;
    //prompt user for first and diff
    System.out.println("Enter first and diff : ");
    first = console.nextInt();
    diff  = console.nextInt();
    //process to create list of 16 elements 
    for (int i=0; i<listSize; i++)
    {
        list[i]=first+i*diff;
    }
}
//this is where I'm having trouble
public static void matricize (int [] list, int [][] matrix)
{
//loop through each row
    for (row=0; row<matrix.length; row++)
    {
    //loop through each column
        for (col=0; col<matrix[row].length; col++)
        {
        //populate matrix with values from list

                matrix[row][col]=**????**;
        }
    }
}
public static void printMatrix(int [][] matrix)
{

    for (row=0; row < matrix.length; row++)
    {
        for (col=0; col < matrix[row].length; col++)
            System.out.printf("%2d" + " ", matrix[row][col]);

        System.out.println();
    }
    //ToDo
}

public static void reverseDiagonal(int [] [] matrix)
{
    //ToDo
}

public static void magicCheck(int [] list, int [] [] matrix)
{
    //ToDo
}

public static void main (String [] args)
{
    int [] list = new int [listSize];
    int [] [] matrix = new int [rows] [columns];
    createArithmeticSeq (list);
    matricize(list, matrix);
    printMatrix(matrix);
    reverseDiagonal(matrix);
    printMatrix(matrix);
    magicCheck(list, matrix);   
}

}
import java.util.*;
公共级魔法广场
{
静态最终整数行=4;
静态最终整数列=4;
静态最终整型listSize=16;
静态int行,col;
静态扫描仪控制台=新扫描仪(System.in);
公共静态void CreateArthmeticSeq(int[]列表)
{   
int优先;
int-diff;
//提示用户输入first和diff
System.out.println(“输入第一个和差异:”);
first=console.nextInt();
diff=console.nextInt();
//创建16个元素的列表的过程

对于(int i=0;i,列表似乎将矩阵元素存储在一个线性数组中,您希望在
matricize
方法中将数据重新组织为矩阵

最简单的方法是为列表保留一个单独的索引,并在填充矩阵时增加索引。如果列表按行主顺序存储矩阵元素,则可以执行以下操作:

public static void matricize (int [] list, int [][] matrix)
{
    int listIndex = 0;
    //loop through each row
    for (row=0; row<matrix.length; row++)
    {
        //loop through each column
        for (col=0; col<matrix[row].length; col++)
        {
            //populate matrix with values from list
            matrix[row][col] = list[listIndex++];
        }
    }
}
publicstaticvoidmatricize(int[]列表,int[]矩阵)
{
int listIndex=0;
//循环遍历每一行

对于(row=0;row)您到底有什么问题?我不知道如何将列表[]中的整数传递到矩阵[][]。谢谢。我已经按照您建议的方式重写了矩阵。但是,我仍然遇到了一个问题,因为当我运行程序时,我得到的不是[4][4]矩阵,而是[8][4]矩阵,并且每个元素都是相同的,例如,如果first=21,diff=5,则每个元素都是96。让我澄清一点:在createArrithmeticSeq方法中,通过选择第一个整数(first),然后选择一个数字(diff)来增加该值,从而创建一个16元素列表。该方法循环创建列表。这是我想用来创建[4][4]矩阵的列表。事实上,我刚刚找到了它。我必须将“listIndex”更改为I,因为我在第一个方法CreateArthmeticSeq中使用了变量I。感谢您的帮助!@user2469532-我很高兴它成功了。抱歉,我被afk限制了20分钟。