ArithmeticException除以零...如何修复此方法?

时间:2015-04-25 18:33:27

标签: java arrays divide-by-zero arithmeticexception dividebyzeroexception

此方法的目的是迭代称为grid [] []的二维整数数组,并将基于最大值和最小值的整数转换为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;
    }

2 个答案:

答案 0 :(得分:2)

此行是产生ArithmaticExcpetion的结果。

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

您动态计算arrayRange,因为您不知道该值何时为0.因此您可以使用try catch块来包围此行以执行一些异常处理。

答案 1 :(得分:1)

Dilip的解决方案非常完美。或者你也可以添加一个条件语句,只有当arrayRange不是0时才会传递它。如果它是0则执行其他操作。但是每次计算arrayRange时执行条件语句都会增加开销。