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;
}
}
これは、2 次元配列内の最大値を見つける最も簡単な方法です。必ずしも最善の方法ではありませんが、ロジックに従うのは簡単なはずです。メソッド findMaxOf2dArray(double[][]) では、最大値を double に格納できる最小値に設定します。次に、double を含む各配列をループする for ループに入ります。このループの反復ごとに、現在の配列に格納されている各値を反復する 2 番目の for ループに入ります。次に、各値が maxValue に格納されている値と比較されます。配列に格納された値が maxValue に格納された値より大きい場合、maxValue の値を配列に格納された値に変更します。最後に、2 次元配列の各配列の各値をチェックした後、maxValue に格納されている値を返します。
コードの問題は、各配列に格納されている値を反復処理しないことだと思います。配列自体を 2 回反復処理するだけです。result[i] に格納されている各値は、比較する double 値を保持する配列です。さらに、j を i + 1 から開始することで、反復される i + 1 個の値をスキップします。最後に、double は String と比較できません。