Java 我得到一个被零除的算术异常错误。但我不是。为什么?

Java 我得到一个被零除的算术异常错误。但我不是。为什么?,java,Java,这是我试图解决的编码问题 编写一个程序,从键盘读取两个数字aa和bb,计算[a;b][a;b]区间内所有数字的算术平均值,并将其输出到控制台,这些数值可被33整除 示例输入1: -5 十二, 样本输出1: 4.5 这是我的密码: import java.util.Scanner; 班长{ 公共静态void main(字符串[]args){ 扫描仪=新的扫描仪(System.in); 双平均=0; int a=scanner.nextInt(); int b=scanner.nextInt();

这是我试图解决的编码问题

编写一个程序,从键盘读取两个数字aa和bb,计算[a;b][a;b]区间内所有数字的算术平均值,并将其输出到控制台,这些数值可被33整除

示例输入1:
-5
十二,

样本输出1:
4.5

这是我的密码:

import java.util.Scanner;
班长{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
双平均=0;
int a=scanner.nextInt();
int b=scanner.nextInt();

问题:抛出算术异常


问题是什么?

变量i从-5循环到12。然后,除以(a+b)/i(第14行)

0介于-5和12之间。因此,最终将被0除


(我假设第13行应该防止这种情况发生,但您编写它的方式却没有。事实上,第14行实际执行的I的极少数值中有0。)

根据您的样本输入和样本输出,您需要将该范围内可被3整除的所有数字相加,然后将总数除以该范围内的不同数字

在-5和12之间,可被3整除的数字为:

-3,0,3,6,9,12

当你把它们加在一起,得到27个。
总共有6个不同的数字。
所以平均值是27除以6,得到4.5

现在是代码

import java.util.Scanner;
公共类平均范围{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
系统输出打印(“输入下限:”);
int a=scanner.nextInt();
scanner.nextLine();
系统输出打印(“输入上限:”);
int b=scanner.nextInt();
int lower=数学最小值(a,b);
整数上限=数学最大值(a,b);
int-total=0;
整数计数=0;
对于(int i=较低;i 0){
双平均=(双)总数/计数;
System.out.println(“average=”+average);
}
否则{
System.out.printf(“在%d和%d%n之间没有可被3整除的数字”,下,上);
}
}
}
下面是一个运行示例:

Enter lower bound: -5
Enter upper bound: 12
-3
0
3
6
9
12
total = 27
count = 6
average = 4.5

这就是所有的代码吗?这些代码不可能抛出例外。请不要发布代码图像,读者可能希望复制粘贴您的代码以进行尝试…为什么您不刚刚编写其余部分?显然,您开始以正确的方式提供代码。粘贴您的代码,而不是代码的图像。此外,当我等于零时,您有一个零除误差。如果a=-5且b大于零,则保证有零除误差。还有一件事,x/3是整数除法,也许您需要x%3来帮助确定数字是否可被三除。这是一个很好的答案,有一个很好的解释。有一点:在计算平均数之前,您可能需要检查计数是否为0。Th我已经相应地编辑了代码。