将String ...数组存储在2D数组中

时间:2011-10-17 01:52:29

标签: java arrays multidimensional-array

我有一个函数,它具有矩阵形式的值,其中包含String ...数组(jdk 1.4中的var args)格式。我可以添加具有2D数组的值并在其中添加数组中的值。

Matrix m = new Matrix(3,3,
            "2",         "2",      "5 /",
            "3 3 *", "7",       "2",    
            "1 1 +",   "1 1 /", "3"
    );

函数调用:

public Matrix(int nRows, int nCols, String... exprArray) {

     Stack<String []> tks = new Stack<String []>();
     String arr[][] = null ;
    for(int i = 0; i < nRows; i++){
        for(int k = 0; k<nCols;k++){

         /****Add the value in 2D array using exprArray dont know how to do it can anyone help me out here *****/

        arr[i][k] = exprArray[i];
        System.out.println(arr[i][k]);

        }
    }
}

3 个答案:

答案 0 :(得分:1)

您需要创建一个数组。

String arr[][] = new String[nRows][nCols];

答案 1 :(得分:0)

我假设您要实现方法,因为上面的实现看起来更像构造函数。这是我的镜头:

public String[][] matrix(int nRows, int nCols, String... exprArray) {
    String[][] m = new String[nRows][nCols];
    for (int i = 0; i < nRows; i++)
        for (int j = 0; j < nCols; j++)
            m[i][j] = exprArray[(i * nCols) + j];
    return m;
}

如果您需要在构造函数中完成此操作,只需在构造函数中调用上面的方法(显然,您必须声明String [] []类型的属性来存储生成的矩阵)

答案 2 :(得分:0)

这可能无法回答你原来的任务,但我想提出另一个观点

你可以选择像这样通过一维数组来制作2D数组并隐藏你的getter背后的impl细节

public class Matrix {

    private String[] data;
    private int colCount;

    public Matrix(int rowCount, int colCount, String... data) {
        this.data = new String[rowCount * colCount];
        System.arraycopy(data, 0, this.data, 0, data.length);

        this.colCount = colCount;
    }

    public String get(int row, int col) {
        return data[row * colCount + col];
    }
}

如果您的rowCount与colCount

相同,则可以进一步简化此操作
class SquareMatrix extends Matrix{

    public SquareMatrix(int size, String... data) {
        super(size, size, data);
    }
}