java - 如何在java中检查矩阵位置值?

标签 java arrays matrix position

给定一个填充了所有值的矩阵,需要随机提取数据以创建一个随机矩阵(每个位置都用空值初始化)。问题在于检查位置(在 randomMatrix 内)是否不同于 null,如下所示:

public void randomLogic(String[][] givenMatrix){   

        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                int positioni = this.randInt(0, 1);
                int positionj = this.randInt(0, 1);
                int x = this.randInt(0, 3);
                int y = this.randInt(0, 2);            

             /*In here lies the reported issue while checking if empty. */
             while (!this.randomMatrix[x][y].isEmpty()) {
                    x = this.randInt(0, 3);
                    y = this.randInt(0, 2);
                    this.randomMatrix[x][y] = givenMatrix[positioni][positionj];
              }
            }
        }
    }

我还尝试了以下方法:while(this.randomMatrix[x][y] != null)并且代码立即崩溃。所有的解决逻辑都按预期进行(因为如果我省略该部分,它会存在缺陷但可以工作),唯一的问题是验证。无论评估哪个职位,它总是停止工作。

还有其他方法检查矩阵位置值吗?

最佳答案

您是否试图从给定矩阵中提取随机值(因此,有些值会重复)或者您想要专门随机化给定矩阵?

如果是后者,我会采取不同的处理方式。 首先,将给定矩阵的所有值收集在一个线性数组或列表中。 然后,您可以随机化该数组,您将得到一个由行*列项组成的大数组,其中原始矩阵中的所有值都已随机化。

然后,您可以系统地填充新的随机矩阵,按顺序取出数组的每个元素,直到完成新矩阵的每一行和每一列。

我会选择这种方法,因为它更容易,并且会在固定的步骤数内完成;而不是随机填充位置,因为你可能会在同一个位置着陆两次来填充,并且你必须随机化,直到击中所有位置。

(此外,如果您不关心重复新矩阵的值,那么您可以每次简单地选择该数组的一个随机位置,而不是采用随机数组的每个元素)

关于java - 如何在java中检查矩阵位置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25925145/

相关文章:

c++ - 组合两个矩阵,保留它们的元素值

matlab - Matlab不优化以下内容吗?

java - OpenCV+Eclipse+Android : Error org. opencv.video Video.java

java - 确认 oauth2 批准流程后,service/oauth/authorize 中的主体为空(approveR Deny 中的 http post)

JavaScript 搜索特定字符串

javascript - 如果对象值为 true 并且键在数组中,则获取对象键。 JavaScript

java - 使用给定的字符串参数搜索数组元素

python - 交织 3 个 numpy 矩阵?

java - 将 Java 日期时间与当前时间进行比较

java - 内存缓存架构