Страницы

Поиск по вопросам

среда, 17 октября 2018 г.

Как узнать первую цифру элемента массива?

Друзья, как узнать первую цифру элемента массива? С последней я разобрался, а вот с первой затруднения.
например, дан массив a=[352, 234,745,853]
вывести 3, 2, 7 ,8


Ответ

Вариант Владимира Мартьянова из комментариев (о преобразовании в строку и выборке символа на первой позиции) хороший.
Альтернативно можно делать так:
Если число равно нулю, то выводим 0, берём следующее число и снова проверяем. Когда число перестанет быть 0, переходим к пункту 2 Находим от числа десятичный логарифм Отбрасываем мантиссу (получается число, равное разрядности - 1) Возводим 10 в полученную степень Отбрасываем мантиссу (потому что Math.pow возвращает double) Делим исходное число на полученное в пункте 5 (получается первая цифра)
Такой код:
int a[] = {352, 2354,745,853}; for (int i : a) { if (i==0) { System.out.println(0); continue; } if ( i == Integer.MIN_VALUE ) { System.out.println(2); continue; } System.out.println(i / (int)Math.pow(10, ((int)(Math.log10(Math.abs(i)))))); }
Output:
3 2 7 8
UPDATE
Как подсказал @VladD, нужно отдельно рассмотреть случай с Integer.MIN_VALUE. Дело в том, что Math.abs при i < 0 возвращает -i, а для int это уже выход за пределы 2147483647. Поэтому число возвращается на свою отрицательную позицию.

Комментариев нет:

Отправить комментарий