In (число) t в массив по цифрам
У меня есть число int, условно "123". Нужно перенести его в массив int[] по цифрам, то бишь [1, 2, 3]. Как это можно сделать? Я искал в инете и тут, но решений рабочих и простых не нашел. Если не сложно, опишите также работу своего варианта.
Ответы (3 шт):
Это можно сделать таким образом:
int number = 123;
int digitsTotal = (int)(Math.log10(number)+1);
int[] digitsArray = new int[digitsTotal];
for (int i = digitsTotal - 1; i >= 0; i--) {
digitsArray[i] = number % 10;
number /= 10;
}
Ваше число - number. Массив цифр - digitsArray.
Цикл сделал наоборот потому, что при остатке от деления на 10 мы получаем последнюю цифру числа.
Чтобы это осуществить нужно выполнить этот код:
int nums = 12345;
String text = nums + "";
int[] arr = new int[text.length()];
for(int i = 0; i<text.length(); i++){
arr[i] = nums%10;
nums /= 10;
Как работает этот код:
- Мы создаём массив с длиной, равной количеству символов числа
- Мы берём последний символ числа
- Мы обрезаем последний символ(nums/10) возвращаемся к пункту 3 и снова берём последний символ числа
- И так до тех пор, пока массив не заполнится
Пусть есть число:
int integer = 123;
Чтобы получить массив цифр, сначала преобразуем это число в строку, а затем из каждого символа строки вычтем символ '0':
int[] integers = String.valueOf(integer).chars().map(ch -> ch - '0').toArray();
То же самое можно сделать без использования стримов:
char[] chars = String.valueOf(integer).toCharArray();
int[] integers = new int[chars.length];
for (int i = 0; i < chars.length; i++) {
integers[i] = chars[i] - '0';
}
Результат:
System.out.println(Arrays.toString(integers)); // => [1, 2, 3]