-2

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]);

            }
        }
    }

The error is cannot applied 'double',double[]' 修正を手伝ってもらえますか?

4

1 に答える 1

0
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 と比較できません。

于 2019-07-10T18:37:33.860 に答える