Страницы

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

воскресенье, 26 января 2020 г.

Как отбросить нули у int

#java


Мне нужно убрать нули слева у чисел (int). Как это сделать?

Пример того что мне нужно:

было | стало
10   | 1
100  | 1
200  | 2
300  | 3
400  | 4
401  | 401
410  | 41


Также нужно посчитать, сколько нулей алгоритм отбросил.
    


Ответы

Ответ 1



int i = 4011100; int k = 0; while (i % 10 == 0) { i = i / 10; k++; } System.out.println("Result:" + i + " Zeroz:" + k); Result:40111 Zeroz:2

Ответ 2



Концептуально для определения количества отброшенных нулей (при условии, что вы не отбрасываете их сами) проще всего, наверное, поделить первое число на второе (вы получите степень десятки) и взять десятичный логарифм (получите показатель степени). Не забудьте выполнить округление, т. к. вычисления с плавающей запятой не вполне точны. (Для отбрасывания нулей, разумеется, вам нужна операция взятия остатка, чтобы проверить, ноль ваша последняя цифра или нет, и деления, чтобы отбросить её. Но это уже до меня порекомендовали другие.) Прагматически, если у вас есть числа в строковом представлении, проще не конвертировать в число, а сканировать строку с конца и подсчитывать встреченные нули. Но это решение, на мой вкус, слишком завязано на свойства десятичного представления целых чисел.

Ответ 3



Также удаление последних нулей в числе можно сделать с помощью регулярных выражений без циклов: public static void main(String[] args) { int x = 41002000; // либо записать число сразу в String String num = Integer.toString(x); String new_num = num.replaceAll("0*$", ""); System.out.println(num + " -> " + new_num + ", deleted: " + (num.length()-new_num.length())); } Пример работы на ideone:

Ответ 4



В java так : replaceAll(0,"");

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

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