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

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

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

Ответы [ 24 ]

0 голосов
/ 26 января 2014

Просто, чтобы развить тему, вот как подтвердить, что число является палиндромным целым числом в Java:

public static boolean isPalindrome(int input) {
List<Integer> intArr = new ArrayList();
int procInt = input;

int i = 0;
while(procInt > 0) {
    intArr.add(procInt%10);
    procInt = procInt/10;
    i++;
}

int y = 0;
int tmp = 0;
int count = 0;
for(int j:intArr) {
    if(j == 0 && count == 0) {
    break;
    }

    tmp = j + (tmp*10);
    count++;
}

if(input != tmp)
    return false;

return true;
}

Я уверен, что смогу еще больше упростить этот алгоритм. Тем не менее, это то, где я нахожусь. И это сработало во всех моих тестовых случаях.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 02 августа 2010

Integer.toString (1100) дает вам целое число в виде строки. Integer.toString (1100) .getBytes () для получения массива байтов отдельных цифр.

Edit:

Вы можете преобразовать цифры символов в цифры, таким образом:

  String string = Integer.toString(1234);
  int[] digits = new int[string.length()];

  for(int i = 0; i<string.length(); ++i){
    digits[i] = Integer.parseInt(string.substring(i, i+1));
  }
  System.out.println("digits:" + Arrays.toString(digits));
0 голосов
/ 16 сентября 2016

см. Ниже мое предложение с комментариями

          int size=i.toString().length(); // the length of the integer (i) we need to split;
           ArrayList<Integer> li = new ArrayList<Integer>(); // an ArrayList in whcih to store the resulting digits

        Boolean b=true; // control variable for the loop in which we will reatrive step by step the digits
        String number="1"; // here we will add the leading zero depending on the size of i
        int temp;  // the resulting digit will be kept by this temp variable

    for (int j=0; j<size; j++){
                        number=number.concat("0");
                    }

Integer multi = Integer.valueOf(number); // the variable used for dividing step by step the number we received 
                while(b){

                    multi=multi/10;
                    temp=i/(multi);
                    li.add(temp);
                    i=i%(multi);
                                        if(i==0){
                                        b=false;
                                        }


                }

                for(Integer in: li){
                    System.out.print(in.intValue()+ " ");
                }
0 голосов
/ 27 февраля 2013

При этом используется метод по модулю 10, чтобы вычислить каждую цифру числа больше 0, после чего порядок в массиве будет обратным.Предполагается, что вы не используете «0» в качестве начальной цифры.

Это изменено, чтобы принять ввод пользователя.Этот массив изначально вставлен в обратном направлении, поэтому мне пришлось использовать вызов Collections.reverse(), чтобы вернуть его в порядок пользователя.

    Scanner scanNumber = new Scanner(System.in);
    int userNum = scanNumber.nextInt(); // user's number

    // divides each digit into its own element within an array
    List<Integer> checkUserNum = new ArrayList<Integer>();
    while(userNum > 0) {
        checkUserNum.add(userNum % 10);
        userNum /= 10;
    }

    Collections.reverse(checkUserNum); // reverses the order of the array

    System.out.print(checkUserNum);
...