Как получить отдельные цифры целого числа? - PullRequest
115 голосов
/ 02 августа 2010

У меня есть номера, такие как 1100, 1002, 1022 и т. Д. Я хотел бы иметь отдельные цифры, например, для первого номера 1100, я хочу иметь 1, 1, 0, 0.

Как можноЯ получаю это на Java?

Ответы [ 24 ]

1 голос
/ 09 апреля 2017

Решение Java 8 для получения цифр в виде int [] из целого числа, которое у вас есть в виде строки:

int[] digits = intAsString.chars().map(i -> i - '0').toArray();
0 голосов
/ 19 декабря 2017

в Java, это то, как вы можете отделить цифры от чисел и сохранить их в массиве.

public static void main(String[] args) {
        System.out.println("Digits Array:: "+Arrays.toString(getNumberArr(1100)));
}

private static Integer[] getNumberArr(int number) {
    //will get the total number of digits in the number
    int temp = number;
    int counter = 0;

    while (temp > 0) {
        temp /= 10;
        counter++;
    }
    //reset the temp
    temp = number;

    // make an array
    int modulo;     //modulo is equivalent to single digit of the number.
    Integer[] numberArr = new Integer[counter];
    for (int i = counter - 1; i >= 0; i--) {
        modulo = temp % 10;
        numberArr[i] = modulo;  
        temp /= 10;
    }

    return numberArr;
}

Выход:

Digits Array:: [1, 1, 0, 0]
0 голосов
/ 09 ноября 2017
import java.util.Scanner;

class  Test 
{  
    public static void main(String[] args)   
    {  
        Scanner sc = new Scanner(System.in); 


    int num=sc.nextInt(); 
    System.out.println("Enter a number (-1 to end):"+num);
    int result=0;
    int i=0;
    while(true) 
    { 
      int n=num%10;
      if(n==-1){
        break;
      }
      i++;
      System.out.println("Digit"+i+" = "+n);
      result=result*10+n;
      num=num/10; 


      if(num==0) 
      { 
        break; 
      } 
    }
    }
}
0 голосов
/ 22 июня 2017

Что-то вроде этого вернет char[]:

public static char[] getTheDigits(int value){
    String str = "";
    int number = value;
    int digit = 0;
    while(number>0){
        digit = number%10;
        str = str + digit;
        System.out.println("Digit:" + digit);
        number = number/10;     

    }
    return str.toCharArray();
}
0 голосов
/ 02 октября 2016

Поскольку я не вижу метода по этому вопросу, который использует Java 8, я добавлю это. Предполагая, что вы начинаете с String и хотите получить List<Integer>, вы можете выполнить потоковую передачуэлементы, подобные следующим.

List<Integer> digits = digitsInString.chars().map(Character::getNumericValue)
                            .collect(Collectors.toList());

Получает символы в String как IntStream, отображает эти целочисленные представления символов в числовое значение, а затем собирает их в список.

0 голосов
/ 29 сентября 2013
int number = 12344444; // or it Could be any valid number

int temp = 0;
int divider = 1;

for(int i =1; i< String.valueOf(number).length();i++)
 {

    divider = divider * 10;

}

while (divider >0) {

    temp = number / divider;
    number = number % divider;
    System.out.print(temp +" ");
    divider = divider/10;
}
0 голосов
/ 16 апреля 2016
public int[] getDigitsOfANumber(int number) {
    String numStr = String.valueOf(number);
    int retArr[] = new int[numStr.length()];

    for (int i = 0; i < numStr.length(); i++) {
        char c = numStr.charAt(i);
        int digit = c;
        int zero = (char) '0';
        retArr[i] = digit - zero;

    }
    return retArr;
}
0 голосов
/ 15 октября 2015

Попробуйте это:

int num= 4321
int first  =  num % 10;
int second =  ( num - first ) % 100 / 10;
int third  =  ( num - first - second ) % 1000 / 100;
int fourth =  ( num - first - second - third ) % 10000 / 1000;

Вы получите первый = 1, второй = 2, третий = 3 и четвертый = 4 ....

0 голосов
/ 06 июля 2012

Я думаю, что это будет самый полезный способ получения цифр:

public int[] getDigitsOf(int num)
{        
    int digitCount = Integer.toString(num).length();

    if (num < 0) 
        digitCount--;           

    int[] result = new int[digitCount];

    while (digitCount-- >0) {
        result[digitCount] = num % 10;
        num /= 10;
    }        
    return result;
}

Тогда вы можете получить цифры простым способом:

int number = 12345;
int[] digits = getDigitsOf(number);

for (int i = 0; i < digits.length; i++) {
    System.out.println(digits[i]);
}

или более просто:

int number = 12345;
for (int i = 0; i < getDigitsOf(number).length; i++) {
    System.out.println(  getDigitsOf(number)[i]  );
}

Обратите внимание, что последний метод слишком долго вызывает метод getDigitsOf.Так будет медленнее.Вы должны создать массив int, а затем вызвать метод getDigitsOf один раз, как во втором блоке кода.

В следующем коде вы можете вернуться к процессу.Этот код соединяет все цифры в одно целое:

public int digitsToInt(int[] digits)
{
    int digitCount = digits.length;
    int result = 0;

    for (int i = 0; i < digitCount; i++) {
        result = result * 10;
        result += digits[i];
    }

    return result;
}

Оба метода, которые я предоставил, работают и для отрицательных чисел.

0 голосов
/ 27 июня 2014
import java.util.Scanner;

public class SeparatingDigits {

    public static void main( String[] args )
    {

        System.out.print( "Enter the digit to print separately :- ");
        Scanner scan = new Scanner( System.in );

        int element1 = scan.nextInt();
        int divider;

        if( ( element1 > 9999 ) && ( element1 <= 99999 ) )
        {
            divider = 10000;
        }
        else if( ( element1 > 999 ) && ( element1 <= 9999 ) )
        {
            divider = 1000;
        }
        else if ( ( element1 > 99) && ( element1 <= 999 ) )
        {
            divider = 100;
        }
        else if( ( element1 > 9 ) && ( element1 <= 99 ) )
        {
            divider = 10;
        }
        else 
        {
            divider = 1;
        }

        quotientFinder( element1, divider );




    }

     public static void quotientFinder( int elementValue, int dividerValue )
     {
         for( int count = 1;  dividerValue != 0; count++)
         {
            int quotientValue = elementValue / dividerValue ;
            elementValue = elementValue % dividerValue ;
            System.out.printf( "%d  ", quotientValue );

            dividerValue /= 10;

         }
     }
    }

Без использования массивов и строк. (цифры 1-99999)

вывод:

Введите цифру для печати отдельно: - 12345

1 2 3 4 5

...