【问题标题】:How to change the values of a multidimensional array in a range?如何更改范围内的多维数组的值?
【发布时间】:2020-08-01 17:22:12
【问题描述】:

我想将二维数组的值从给定的起始位置(rowPoscolPos)更改为一定数量的 rowscolumns

到目前为止,我的代码如下:

int[][] block = new int[10][10];

int rowPos = 3, colPos = 3;
int rows = 4, columns = 4;

for (int i = rowPos; i < rows; i++)
    for (int j = colPos; j < columns; j++)
        block[i][j] = 1;

for (int[] x : block) {
    for (int y : x)
        System.out.print(y + " ");
    System.out.println();
}

但是,这给了我以下输出:

0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 1 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 

它只是设置rowPoscolPos 的值。这是我的预期输出:

0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 1 1 1 1 0 0 0 
0 0 0 1 1 1 1 0 0 0 
0 0 0 1 1 1 1 0 0 0 
0 0 0 1 1 1 1 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 

我觉得我很接近但缺少一些小东西,请帮助我!

【问题讨论】:

    标签: java loops for-loop multidimensional-array


    【解决方案1】:

    把循环改成这样:

    for (int i = rowPos; i < rows + rowPos; i++)
        for (int j = colPos; j < columns + colPos; j++)
            block[i][j] = 1;
    

    在您的代码中,您让ij 从您想要开始更改值的行和列开始。这很好,但这也意味着你的情况不再有效。让我告诉你会发生什么:

    1. 您声明 i 并将其值设置为 3。
    2. 您检查i (3) 是否小于rows (4)。成功!
    3. 您声明 j 并将其值设置为 3。
    4. 您检查j (3) 是否小于columns (4)。成功!
    5. 您将block[3][3] 设置为1
    6. j 增加 1,现在为 4。
    7. 您检查j (4) 是否小于columns (4)。失败!
    8. i 增加 1,现在为 4。
    9. 您检查i (4) 是否小于rows (4)。失败!
    10. 您打印数组的内容。

    问题在于,因为您以大于 0 的值开始 ij,所以在执行检查时需要牢记这一点。

    【讨论】:

    • 这对于理解我实际上做错了什么非常有帮助。非常感谢您抽出时间向我详细解释!
    猜你喜欢
    • 2018-08-02
    • 2014-08-10
    • 2020-03-27
    • 1970-01-01
    • 2011-07-19
    • 2013-08-31
    • 2022-11-10
    • 2019-06-29
    相关资源
    最近更新 更多