我正在使用NetBeans IDE使用3个类和一个驱动程序创建一个Academic Progress程序。我不断从Progress Class中得到一个错误。。我在代码中停止的行显示了调试后的错误。
progresoAcademico = (p.getCredApb() / p.getCredInt()) * 100;
和错误即时消息:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at academicprogress.Progress.getProgresoAcademico(Progress.java:92)
at academicprogress.AcademicProgress.main(AcademicProgress.java:73)
C:\Users\solei\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned:
``
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个错误信息表明你的程序遇到了一个除以零的运算异常(java.lang.ArithmeticException: / by zero
)。在Java中,任何数除以零都是未定义的,并且会抛出这样的异常。
根据你提供的代码片段:
progresoAcademico = (p.getCredApb() / p.getCredInt()) * 100;
错误发生在尝试计算学术进度时,具体是通过将getCredApb()
的值除以getCredInt()
的值得到的。错误消息指出,问题在于进行了除以零的操作,这意味着在执行这一行代码时,p.getCredInt()
返回了0。
为了解决这个问题,你需要在进行除法运算之前检查分母是否为零,以避免这个异常。可以在你的Progress
类中的相关方法里添加一个条件判断来实现这一点。例如:
public double getProgresoAcademico() {
if (getCredInt() != 0) {
return (getCredApb() / getCredInt()) * 100;
} else {
// 这里可以根据实际情况处理分母为0的情况,比如返回特定值、抛出自定义异常或打印提示信息等
System.out.println("Error: Credits attempted (CredInt) cannot be zero.");
return -1; // 或者其他你认为合适的处理方式
}
}
这样修改后,当尝试除以零时,程序不会抛出异常,而是会按照你在else
块中定义的方式处理这种情况。记得根据实际需求调整错误处理逻辑。