Друзья, как узнать первую цифру элемента массива?
С последней я разобрался, а вот с первой затруднения.
например, дан массив 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. Поэтому число возвращается на свою отрицательную позицию.
Комментариев нет:
Отправить комментарий