用于插入char [] [] []数组的索引字符串

时间:2015-07-07 02:37:16

标签: java arrays string charat

我对这个程序的算术有点困惑。我有一个字符theString,其长度为x*y*zxyz是char [] [] []数组的维度(我们称之为cArr)。

我想根据特定索引将theString的字符插入cArr。这是一个5x4x3阵列的示例。

String theString = someMethod(); //returns a string of length 60
char[][][] cArr = new char[5][4][3];
for (int z = 0; z < 3; z++) {
    for (int y = 0; y < 4; y++) {
        for (int x = 0; x < 5; x++) {
            cArr[x][y][z] = theString.charAt(/*~~~*/);
        }
    }
}

我可以计算出从长度为20的字符串中将字符插入char [5] [4]数组的算法:

for (int y = 0; y < 4; y++) {
    for (int x = 0; x < 5; x++) {
        cArr[x][y] = theString.charAt((5*y)+x);
    }
}

我应该在charAt()方法中使用什么算术来获得三维char数组?

我最好的尝试是:

char[][][] cArr = new char[5][4][3];
for (int z = 0; z < 3; z++) {
    for (int y = 0; y < 4; y++) {
        for (int x = 0; x < 5; x++) {
            cArr[x][y][z] = theString.charAt(((3^2)*z)+(4*y)+x);
        }
    }
}

但是这会使cArr的所有z-index层都相同。

1 个答案:

答案 0 :(得分:3)

对于像这样的问题,规则很简单。您从最里面的循环开始,然后继续x + y*(length of x) + z*(length of y)*(length of x)

在这个例子中,它将是,

cArr[x][y][z] = theString.charAt(x + y*5 + z*4*5);