0

このメソッドの目的は、grid[][] と呼ばれる整数の 2D 配列を繰り返し処理し、最大値と最小値に基づいて整数を 100 から 250 の間のより小さい範囲に変換することです (元の最小値は 100 になり、元の最小値は最大値は 250 になり、その間のすべてがそれぞれ計算されます)。このメソッドが呼び出されると、ゼロ除算 ArithmeticException が発生します。

明らかに、ここでいくつかの論理的な間違いを犯しています...修正が見られません。誰でも助けることができますか?

public int greenValues(int arrayVal) {  

    int max = 0;
    int min = 0;
    int colorValue = 0;
    int temp;

    for (int i = 0; i < grid.length; i++) {  // finds maximum and minimum numbers in file 
        for (int j = 0; j < grid.length; j++) {  
            if (max < grid[i][j]) {
                max = grid[i][j];   
            }
            if (min > grid[i][j]) { 
                min = grid[i][j];
            }
        }
    }

        int arrayRange = (max-min); // arrayVal, arrayRange, and max and min are 0
        temp = (((arrayVal-min) * COLOR_RANGE) / arrayRange) + 100;    // map values to range of 100 - 250
        colorValue = temp;
        return colorValue;
    }
4

2 に答える 2

2

この行は、生産の犯人ですArithmaticExcpetion

temp = (((arrayVal-min) * COLOR_RANGE) / arrayRange) + 100;

arrayRangeその値がいつ0になるかわからないため、動的に計算します。したがって、この行をtry catchブロックでラップして、例外処理を行うことができます。

于 2015-04-25T18:37:40.793 に答える