如何确定哪个值为0?

时间:2016-10-01 19:20:47

标签: java android android-5.0-lollipop arithmeticexception dividebyzeroexception

我的应用程序获得了第一份崩溃报告。它说有java.lang.ArithmeticException: divide by zero

例外是以下两行之一:

//sWP stands for "Screen Width in Pixels"
// sW stands for "Screen Width" The code is old though, so I may be incorrect for both variables.
//res is just getResources()
int sWP = sW / (res.getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);
float bHeight = 50 * ((float)res.getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);

DisplayMetrics.DENSITY_DEFAULT可以为零吗?或getDisplayMetrics().densityDpi可能为零?

1 个答案:

答案 0 :(得分:0)

res.getDisplayMetrics().densityDpi将为120,160或240(或类似内容),请参阅https://developer.android.com/reference/android/util/DisplayMetrics.html#densityDpi

DisplayMetrics.DENSITY_DEFAULT经常等于160,请参阅https://developer.android.com/reference/android/util/DisplayMetrics.html#DENSITY_DEFAULT

res.getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT将返回0,因为您将int除以int。

将两行中的第一行更改为

int sWP = (int) sW / (((double) res.getDisplayMetrics().densityDpi) / DisplayMetrics.DENSITY_DEFAULT);

它应该有用。