【发布时间】:2014-01-22 07:55:38
【问题描述】:
为什么 java 不能优雅地返回一些除以零的值,而必须抛出异常?
我收到ArrayIndexOutOfBoundsException:0 这是因为damageTaken 实际上是一个存储许多不同“伤害”的值数组。
在 java 中,我正在尝试创建一个进度条。我们的示例:在赛车游戏中,通过将高度值设置为游戏结束前允许的最大伤害的百分比来造成伤害。
程序开始处damageTaken = 0;
(damageTaken / maximumDamage)
将给出 0 - 1 之间的数字。
然后我将它乘以进度条的高度,以创建一个适当高度的填充条。
程序崩溃。我希望进度条的高度为零!
【问题讨论】:
-
它应该在 maximumDamage 为零而不是 damageTaken 时“崩溃”。对吗?
-
检查 maximumDamage(不是damageTaken)不为零,这可能是问题的根源。
-
no maximumDamage 在我的实际示例中只是一些任意值,它是 16
-
那么除以 null 发生在其他地方;介意分享更多代码吗?
-
@Arif:在这种情况下,您的代码不会导致崩溃。 0/16 = 0。如果您看到崩溃,它在其他代码中,或者
maximumDamage实际上是 0。
标签: java processing divide-by-zero