除以零警告

本文关键字:警告 | 更新日期: 2023-09-27 18:29:56

我在程序中遇到了一个除以零的异常问题。我试了好几种把戏,但都没用。为了避免被零除,我应该在代码中更改什么?

我知道我必须在代码的"IF"部分添加一些额外的语句,但我仍然不知道我应该做什么

for (counter = 0; counter < numbers.Length; counter++)
{
    string input = Console.ReadLine();
    if(string.IsNullOrEmpty(input))
    {
        break;
    }
    else
    {
        int.TryParse (input, out numbers[counter]);
    }
}
for (int i = 0; i < numbers.Length; i++) {
    sum += numbers [i];
    if (numbers [i] % 3 == 0 && numbers [i] % 9 != 0) {
        div3not9++;
    }
    if (numbers [i] >= 11 && numbers [i] <= 131 && (numbers [i] * numbers [i] % 7 == 0) && (numbers [i] * numbers [i] % 3 != 0)) {
        range11to131sqdiv7not3++;
        SUMrange11to131sqdiv7not3 += numbers [i];
        if (range11to131sqdiv7not3 > 0) {
            mean = SUMrange11to131sqdiv7not3 / range11to131sqdiv7not3;
        }
            else
                mean = 0;
        }
    }
for (int y = 0; y < numbers.Length; y++) {
    if (numbers [y] > 0)
        min = numbers [y];
}
for (int r = 0; r < numbers.Length; r++) {
    if (numbers [r] < min && numbers [r] > 0)
        min = numbers [r];
    if (numbers [r] % min == 0) {
        divmin++; // DIVISION BY ZERO EXCEPTION
    }
    if (sum % numbers [r] == 0) {
        divisorsofsum++;  // DIVISION BY ZERO EXCEPTION
    }
}

除以零警告

被零除是由使用%运算符引起的。此运算符返回除法的余数,因此如果第二个操作数为零,则会失败。

所以,如果

numbers[r] % min

min为零。你需要特别处理那个案子。并且类似地用于%运算符的其他用途。

将最后一条for语句更改为:

for (int r = 0; r < numbers.Length; r++) {
    if (numbers [r] < min && numbers [r] > 0)
        min = numbers [r];
    if (min == 0)
    {
      // What to do when min is 0 is up to you
    }
    else
    {
       if (numbers [r] % min == 0) {
           divmin++;
       }
       if (sum % numbers [r] == 0) {
           divisorsofsum++;
       }
    }
}

因为min不能为0,因为在执行x%min时,实际上是在除以min,并检查剩余的