Сохранить массив String ... в 2D-массиве - PullRequest
1 голос
/ 17 октября 2011

У меня есть функция, которая имеет значения в матричной форме с массивом String ... (var args в jdk 1.4). Могу ли я добавить значения, имеющие двумерный массив и добавив в него значения из массива.

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 ]

1 голос
/ 17 октября 2011

Вам нужно создать массив.

String arr[][] = new String[nRows][nCols];
0 голосов
/ 17 октября 2011

это может не отвечать вашему первоначальному квесту, но я пытаюсь дать другую перспективу

, вы можете выбрать, как использовать двумерный массив с помощью одномерного массива, как показано ниже, и скрыть детали 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);
    }
}
0 голосов
/ 17 октября 2011

Я предполагаю, что вы хотите реализовать метод , потому что ваша реализация выше больше похожа на конструктор. Вот мой снимок:

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 [] [] для хранения полученной матрицы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...