In (число) t в массив по цифрам

Рейтинг: -2Ответов: 3Опубликовано: 06.05.2023

У меня есть число int, условно "123". Нужно перенести его в массив int[] по цифрам, то бишь [1, 2, 3]. Как это можно сделать? Я искал в инете и тут, но решений рабочих и простых не нашел. Если не сложно, опишите также работу своего варианта.

Ответы

▲ 0Принят

Чтобы это осуществить нужно выполнить этот код:

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;
  
      

Как работает этот код:

  1. Мы создаём массив с длиной, равной количеству символов числа
  2. Мы берём последний символ числа
  3. Мы обрезаем последний символ(nums/10) возвращаемся к пункту 3 и снова берём последний символ числа
  4. И так до тех пор, пока массив не заполнится
▲ 0

Это можно сделать таким образом:

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 мы получаем последнюю цифру числа.

▲ 0

Пусть есть число:

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]