Как выяснить, какое значение равно 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);

и это должно работать.

Другие вопросы по тегам