【问题标题】:Indexing string for insertion into char[][][] array用于插入 char[][][] 数组的索引字符串
【发布时间】:2015-07-07 02:37:16
【问题描述】:

我对这个程序的算术有点困惑。我有一个长度为x*y*z 的字符串theStringxyz 是 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);
    }
}

对于 3 维字符数组,我应该在 charAt() 方法中使用什么算法?

我最好的尝试是:

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 层都相同。

【问题讨论】:

  • 使用this terminology:完整窗格数乘以窗格中的多维数据集+完整列数(在部分窗格中)乘以列中的多维数据集+部分列中的多维数据集数。

标签: java arrays string charat


【解决方案1】:

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

在这个例子中,它会是,

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

【讨论】:

    猜你喜欢
    • 2019-04-09
    • 2011-08-23
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多