gpt4 book ai didi

java - 从 python 到 Java 的 all 和 any 的替代方案?

转载 作者:行者123 更新时间:2023-11-30 06:39:39 25 4
gpt4 key购买 nike

我正在尝试编写如何使用 Java 8 找出矩阵中行列式的代码。这项工作有一些特殊情况。例如,当矩阵是上三角矩阵时。我使用以下代码使用 Python 3.6 编写了这项工作:

def is_upper_triangular(a, order):
for i in range(1, order):
if all(a[i][j] == 0 for j in range(order)):
return True
return False

这是非常简单和干净的代码,所以我想过用 Java 进行编码,但我没有找到任何 Java 的“全部”方法来使用它。我在这个网页中找到了一些有关此问题的信息,并给出了否定的解决方案。有没有其他方法可以解决我的问题。这是我现在的 java 代码:

public static double detMatrix(double[][] matriz) {
if(matriz.length == 1)
return matriz[0][0];
if(matriz.length == 2)
return matriz[0][0] * matriz[1][1] - matriz[1][0] * matriz[0][1];
double det = 0;
for(int i=0; i<matriz.length; i++){
double[][] nm = new double[matriz.length-1][matriz.length-1];
for(int j=0; j<matriz.length; j++){
if(j != i){
for(int k=1; k<matriz.length; k++){
int indice = -1;
if(j<i)
indice = j;
else if(j>i)
indice = j - 1;
nm[indice][k-1] = matriz[j][k];
}
}
}
if(i % 2 == 0)
det += matriz[i][0] * detMatrix(nm);
else
det -= matriz[i][0] * detMatrix(nm);
}
return det;
}

谢谢

最佳答案

我知道您要求 Java 中的特定关键字功能,但不同的编程语言提供不同的方法。

例如,为什么不简单地使用 Arrays.fill(...) 而不是 all 运算符呢?看起来像的Python

 for i in range(1, order):
if all(a[i][j] == 0 for j in range(order))

看起来像

 for (int i = 0; i < a.length, i++) {
Arrays.fill(a[i], i+1, a[i].length, 0);
}

同样,Python 中的 any 操作可能看起来像是用更少的资源做更多的事情,但实际上它会崩溃为

 for (Element element : allElements() {
if (element satisifies condition) {
... statements ...
}
}

使用 Java,上述循环可以工作,但它使效率低下变得明显。如果您确实不想看到代码在做什么,可以将其隐藏在方法中。

 public List<int> findFives(int[][] a) {
...
}

关于java - 从 python 到 Java 的 all 和 any 的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44605704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com