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;
}
}
Это был бы самый простой способ найти максимальное значение в 2d-массиве. Не обязательно лучший способ, но должно быть легко следовать логике. В методе findMaxOf2dArray (double [] []) мы устанавливаем максимальное значение наименьшее возможное значение, которое может быть сохранено в double. Затем мы вводим цикл for, который проходит через каждый массив, который содержит double. Для каждой итерации этого цикла мы вводим второй цикл for, который перебирает все значения, хранящиеся в текущем массиве. Каждое значение затем сравнивается со значением, сохраненным в maxValue. Если значение, хранящееся в массиве, больше, чем значение, хранящееся в maxValue, тогда мы меняем значение maxValue на значение, сохраненное в массиве. Наконец, после проверки каждого значения в каждом массиве 2d-массива, мы возвращаем значение, сохраненное в maxValue.
Я считаю, что проблема вашего кода в том, что вы никогда не просматриваете значения, хранящиеся в каждом массиве. Вы только перебираете сами массивы - дважды. Каждое значение, сохраненное в result [i], само по себе является массивом, который содержит двойные значения, которые вы хотите сравнить. Кроме того, начиная j с i + 1, вы пропускаете значения i + 1, через которые нужно пройти. Наконец, двойник не может сравниваться со строкой.