繁体   English   中英

在java中替换二维数组中的数字?

Replacing a number in a 2D array in java?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个函数可以找到第一个最小值并从二维数组中返回它:

public static int getMinimumValueOfTerrain(int[][] terrain) {
    int min = Integer.MAX_VALUE;
    for (int row = 0; row < terrain.length; row++) {
        for (int col = 0; col < terrain[row].length; col++) {
            min = Math.min(min, terrain[row][col]);
        }
    }
    return min;
}

我有另一个函数应该用它的负值替换找到的最小值:

public static int[][] replaceMinusValue(int[][] terrain) {
    for (int row = 0; row < terrain.length; row++) {
        for (int col = 0; col < terrain[row].length; col++) {
            int tempValue = getMinimumValueOfTerrain(terrain);
            int minusValue = -tempValue;
        }
    }
    return terrain;
}

示例:

2 1 3
3 2 1
4 2 5

预期结果:

2 -1 3
3 2 1
4 2 5

我怎样才能用我的功能来处理它?

3 个回复

您还应该在getMinimumValueOfTerrain保留min的行和列索引。 for循环之后,您可以使用它的负数更改terrain[minRow][minColumn] 如果没有约束,我认为只有getMinimumValueOfTerrain方法就足够了。 如果有,您可以编写另一个返回 2 元素索引数组的函数。

您有多种选择。 如果你只这样做一次或者效率不重要,你可以遍历整个数组并找到最小的元素,然后替换该元素。 例如:

public static void replaceMinusValue(int[][] terrain) {
    int min = Integer.MAX_VALUE;
    int minI = -1;
    int minJ = -1;
    for (int i = 0; i < terrain.length; i++) {
        for (int j = 0; j < terrain[i].length; j++) {
            if (terrain[i][j] < min) {
                min = terrain[i][j];
                minI = i;
                minJ = j;
            }
        }
    }

    terrain[minI][minJ] *= -1;
}

会这样做。 注意,翻转后不需要返回地形(就像排序时不返回新数组一样)。

更快的实现是检测最小值的行和列坐标并修改这个值:

public static int[][] findAndReplaceMinValue(int[][] terrain) {
    int min = Integer.MAX_VALUE;
    int minRow = -1, minCol = -1;

    for (int row = 0; row < terrain.length; row++) {
        for (int col = 0; col < terrain[row].length; col++) {
            if (terrain[row][col] < min) {
                min = terrain[row][col];
                minRow = row;
                minCole = col;
            }     
        }
    }
    if (minRow != -1 && minCol != -1) {
        terrain[minRow][minCol] *= -1;
    }
    return terrain;
}

如果必须在getMinimumValueOfTerrain重用现有方法getMinimumValueOfTerrain ,则应再次重新找到min元素并可以应用break嵌套循环:

public static int[][] replaceMinusValue(int[][] terrain) {
    int min = getMinimumValueOfTerrain(terrain);

    out: 
    for (int row = 0; row < terrain.length; row++) {
        for (int col = 0; col < terrain[row].length; col++) {
            if (min == terrain[row][col]) {
                terrain[row][col] *= -1; // or -min
                break out;
            }    
        }
    }
    return terrain;
}
2 在二维数组Java中绘制数字菱形

我一直在解决一些编码问题,以便为编码面试做好准备,并发现了一个令人费解的问题。 我花了一些时间来解决这个问题; 但是,代码看起来硬编码并且没有样式。 所以,我想知道我是否可以获得有关代码样式的一些反馈,或者可能更好地了解解决问题的方法。 这个问题基本上要求你用二维数组中的模式绘制数字 ...

3 用户将数字输入Java中的二维数组

我在用Java输入用户时遇到麻烦,希望任何人都可以帮助:)用户声明2d数组的大小(数字d是方阵的边),然后输入数字“ n”,该数字告诉编程将有多少个数字输入,然后需要输入这些数字(例如,如果n = 4,则输入必须类似:5 17 320。我已经为单行数组编写了相同的东西 但是在为2d数组做 ...

5 替换二维数组中的字符

编辑*** 我在替换二维数组中的字符时遇到问题。 最初,我的代码从文本文件中读取并将数据存储在临时字符串中。 我对如何用不同的字符替换字符感到困惑。 我使用了嵌套 for 循环,但代码不起作用。 感谢帮助! 我试图用'*'替换p,用'~'替换w 这是我要替换的数据 它有 25 行和 16 ...

2019-12-01 22:39:47 1 97   c++
7 反转二维数组中的数字

我试图反转这个二维数组中的数字,但我碰巧只反转了第一个和最后一个数字。 到目前为止,我已经这样做了,但不知道错误在哪里以及如何修复它,以便每个数字都被反转,而不仅仅是第一个和最后一个: ...

8 java中的二维数组

我似乎无法在我的二维数组上得到正确的输出。 答案应该是1 5 9 2 6 10 3 7 11 4 8 12我得到1 5 9 2 6 10 3 7 11 int intar行必须是这样的。 非常感谢任何帮助! 这是我的代码: ...

10 在Java中遍历二维数组

我在一个教程中看到,我可以通过这种方式遍历对象数组: 但是现在我想遍历二维数组,当我使用此代码时,我遇到了一个问题(说:不兼容的类型必需:appl1.Animals foundLappl1.Animals [])。 当我使用此代码 有谁知道我该如何克服这个问题。 预先感谢您的 ...

2012-01-29 22:12:48 2 3283   java
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM