如何获取多个数组中的最大值?
How to get Maximum value in multiple array?
我想取result.length得到的最大值,但是调用的方式有问题,你能帮我吗?
double[][] result = matrixMultiplexing(neighboursAdjSquare(matrixEgoNetwork), matrixDecrement(ones, matrixEgoNetwork));
double max = result[0][0];
ArrayList<Double> val= new ArrayList<>();
for (int i = 0; i < result.length; i++) {
for (int j = i+1; j < result.length; j++) {
Arrays.sort(result);
if(result[i][j]== "I wanna called here" ){
val.add(result[i][j]);
}
}
}
错误无法应用'double',double[]'
你能帮我解决这个问题吗?
public class FindMaxOf2dArray {
public static void main(String[] argv) {
double[][] arr2d = new double[][]{
{1.0, 2.0, 3.0, 4.0},
{5.0, 6.0, 7.0, 8.0},
{99.0, 0.0, 0.0, -1.0}
};
double maxOfarr2d = findMaxOf2dArray(arr2d);
System.out.println("The maximum value contained in arr2d is " + maxOfarr2d);
}
static double findMaxOf2dArray(double[][] arr2d){
double maxValue = Double.MIN_VALUE;
for(int i = 0; i < arr2d.length; i++){ //iterate through the number of arrays
for(int j = 0; j < arr2d[i].length; j++){//iterate through each value in the given array
if(arr2d[i][j] > maxValue){
maxValue = arr2d[i][j];
}
}
}
return maxValue;
}
}
这是在二维数组中查找最大值的最straight-forward 方法。不一定是最好的方法,但应该很容易遵循逻辑。在方法 findMaxOf2dArray(double[][]) 中,我们将最大值设置为可以存储在双精度数中的最小可能值。然后我们输入一个 for-loop 循环遍历每个包含双精度数的数组。对于此循环的每次迭代,我们输入第二个 for-loop 来遍历存储在当前数组中的每个值。然后将每个值与存储在 maxValue 中的值进行比较。如果数组中存储的值大于 maxValue 中存储的值,那么我们将 maxValue 的值更改为数组中存储的值。最后在检查了二维数组的每个数组中的每个值之后,我们 return 存储在 maxValue 中的值。
我认为您的代码存在的问题是您从不遍历存储在每个数组中的值。您只需遍历数组本身——两次。 result[i] 中存储的每个值本身就是一个数组,其中包含您要比较的双精度值。此外,通过在 i + 1 处开始 j,您可以跳过要迭代的 i + 1 个值。最后,double 不能与 String 进行比较。
我想取result.length得到的最大值,但是调用的方式有问题,你能帮我吗?
double[][] result = matrixMultiplexing(neighboursAdjSquare(matrixEgoNetwork), matrixDecrement(ones, matrixEgoNetwork));
double max = result[0][0];
ArrayList<Double> val= new ArrayList<>();
for (int i = 0; i < result.length; i++) {
for (int j = i+1; j < result.length; j++) {
Arrays.sort(result);
if(result[i][j]== "I wanna called here" ){
val.add(result[i][j]);
}
}
}
错误无法应用'double',double[]' 你能帮我解决这个问题吗?
public class FindMaxOf2dArray {
public static void main(String[] argv) {
double[][] arr2d = new double[][]{
{1.0, 2.0, 3.0, 4.0},
{5.0, 6.0, 7.0, 8.0},
{99.0, 0.0, 0.0, -1.0}
};
double maxOfarr2d = findMaxOf2dArray(arr2d);
System.out.println("The maximum value contained in arr2d is " + maxOfarr2d);
}
static double findMaxOf2dArray(double[][] arr2d){
double maxValue = Double.MIN_VALUE;
for(int i = 0; i < arr2d.length; i++){ //iterate through the number of arrays
for(int j = 0; j < arr2d[i].length; j++){//iterate through each value in the given array
if(arr2d[i][j] > maxValue){
maxValue = arr2d[i][j];
}
}
}
return maxValue;
}
}
这是在二维数组中查找最大值的最straight-forward 方法。不一定是最好的方法,但应该很容易遵循逻辑。在方法 findMaxOf2dArray(double[][]) 中,我们将最大值设置为可以存储在双精度数中的最小可能值。然后我们输入一个 for-loop 循环遍历每个包含双精度数的数组。对于此循环的每次迭代,我们输入第二个 for-loop 来遍历存储在当前数组中的每个值。然后将每个值与存储在 maxValue 中的值进行比较。如果数组中存储的值大于 maxValue 中存储的值,那么我们将 maxValue 的值更改为数组中存储的值。最后在检查了二维数组的每个数组中的每个值之后,我们 return 存储在 maxValue 中的值。
我认为您的代码存在的问题是您从不遍历存储在每个数组中的值。您只需遍历数组本身——两次。 result[i] 中存储的每个值本身就是一个数组,其中包含您要比较的双精度值。此外,通过在 i + 1 处开始 j,您可以跳过要迭代的 i + 1 个值。最后,double 不能与 String 进行比较。