我的程序中有一个除零异常的问题。我尝试了几个技巧,但都没有奏效。我应该在代码中更改什么以避免除以零?
我知道我必须在代码的“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
}
}
答案 0 :(得分:6)
除以零是由于您使用%
运算符引起的。如果第二个操作数为零,则此operator returns the remainder of a division等将失败。
所以,如果
numbers[r] % min
导致零除错误,然后min
为零。你需要特别对待这个案子。对于%
运算符的其他用途也类似。
答案 1 :(得分:1)
将上一个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
并检查剩余的