开发者社区 问答 正文

我创建的方法无法正常工作,另一个方法也有错误

我正在使用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: 
``

展开
收起
垚tutu 2019-12-12 09:24:49 546 分享 版权
阿里云 AI 助理回答

这个错误信息表明你的程序遇到了一个除以零的运算异常(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块中定义的方式处理这种情况。记得根据实际需求调整错误处理逻辑。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: