Как выяснить, какое значение равно 0?
Я получил свой первый отчет о сбое для моего приложения. Он говорит, что есть 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 ответ
res.getDisplayMetrics().densityDpi
будет 120, 160 или 240 (или что-то подобное), см. https://developer.android.com/reference/android/util/DisplayMetrics.html.
DisplayMetrics.DENSITY_DEFAULT
постоянно равно 160, см. https://developer.android.com/reference/android/util/DisplayMetrics.html.
res.getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT
вернет 0, потому что вы делите int на int.
Измените первую из двух строк на
int sWP = (int) sW / (((double) res.getDisplayMetrics().densityDpi) / DisplayMetrics.DENSITY_DEFAULT);
и это должно работать.