在java中使用单个数组填充bidimensional数组

时间:2015-04-05 18:40:31

标签: java arrays matrix

如何在不使用libs的情况下使用数组填充java中的矩阵?

我有这个方法

public static String[][] transformArray(String msg, int slice) {
    String matrix[][] = new String[slice][msg.length() / slice];

    String[] msgArray= mensagem.split("");


        for (int j = 0; j < matrix.length; j++) {
            for (int h = 0; h < matrix[j].length; h++) {
                for (int i = 0; i < matrix.length(); i++ ) {
                    matrix[j][h] = msgArray[i];
            }
        }
    }


    return matrix;
}

当我打电话时:

String anotherMatrix = transformArray("Java is cool", 2);

我的回报是这样的(我有一种打印矩阵的方法):

 l l l l l l 
 l l l l l l 

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我假设你想要这个

int i = 0;
for (int j = 0; j < matrix.length; j++) {
    for (int h = 0; h < matrix[j].length; h++) {
        matrix[j][h] = msgArray[i++];
    }
}

你不应该使用3个循环。您的代码发生的情况是,对于每个jh,矩阵条目将依次替换为每个字符,因此每个条目最终都来自l cool 1}}。每个条目都不应该有一个循环,因为你只需要一个字符。

答案 1 :(得分:0)

为了访问2D数组中的每个元素,您必须像这样迭代:

for(int i=0 ; i<n ; i++) {
    for(int j=0; j<n ; j++) {
        myArray[i][j] = inc;
        inc++;
    }
}

您改为使用三个不正确的for-loops。尝试调整代码以遵循此设置,这非常简单。编辑: pbabcdefp 已经为您完成了这项工作!