#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,"");
Комментариев нет:
Отправить комментарий