【发布时间】:2013-06-05 03:25:43
【问题描述】:
我正在从 HackerRank.com 解决一些练习,代码在 Netbeans 甚至在测试用例的页面编译器中都能完美运行,但是当我提交代码时,它在每个测试中都会抛出这个错误(最后一个除外) :
ArithmeticException:在 Solution.main(Solution.java:15) 处抛出
代码如下:
Scanner s = new Scanner(System.in);
int a = s.nextInt(),j=1;
for(int i=0; i<a; i++){
int b = s.nextInt(), c =s.nextInt();
for(j = b*c; j>0;j--) {
if((b*c)%(j*j)==0){
System.out.println(b*c/(j*j));
break;}
}
}
第 15 行是:
if((b*c)%(j*j)==0){
这句话有什么问题? 我在 for 循环中将 'j' 设置为与 0 不同,所以没有理由除以零,这是我自己能找到的唯一解释。
提前谢谢你。
【问题讨论】:
-
除被零除之外的许多条件都可能触发 ArithmeticException。例如,导致虚数或整数溢出的操作。如果您确定它不是 div0,则很可能是溢出。
-
当你从 s.nextInt() 插入值时可能得到
0 -
您没有从异常中获得其他信息吗??
-
溢出?您的除数为
j的平方,这可能导致值为零。 -
他们没有显示测试用例,但我相信他们不会插入 0,因为它应该是一个长度度量。没有其他信息,仅此而已。
标签: java if-statement divide-by-zero arithmeticexception