Проблема: метод имеет один параметр целое число. Разбейте целое число на последовательность отдельных цифр в обратном порядке. Результатом будет массив, содержащий отдельные числа в обратном порядке.

Тестер: digitExtractor(16384) → {4, 8, 3, 6, 1}

DigitExtractor(123) → {3, 2, 1}

DigitExtractor(23) → {3, 2}

DigitExtractor(-123) → {-1, 2, 3} (у меня проблема с этим)

public int[] digitExtractor(int number)
{
   int[] arr;
   ArrayList<Integer> digits = new ArrayList<Integer>();
   if(number == 0)
   {
      digits.add(number);
   }
   if(number < 0)
   {
      number *= -1;
   }
   while (number != 0)
   {
      digits.add(number % 10);
      number /= 10;
   }
   arr = new int[digits.size()];
   for(int i = 0; i < digits.size(); i++)
   {
      arr[i] = digits.get(i);
   }
   return arr;
}

Мой код работает, за исключением отрицательного числа. Я не знаю, как это исправить. Какие-нибудь советы?

0
byerlyfactor 10 Дек 2014 в 20:20
Вы умножили отрицательные числа на -1, и это сделано правильно. Но вам нужно снова умножить на -1, чтобы сохранить отрицательный знак.
 – 
maxx777
10 Дек 2014 в 20:27
Это специально, что отрицательный не перевернут по порядку?
 – 
EpicPandaForce
10 Дек 2014 в 21:35

2 ответа

Прочитайте мой комментарий и попробуйте это:

public int[] digitExtractor(int number)
{
   int[] arr;
   boolean flag=false;
   ArrayList<Integer> digits = new ArrayList<Integer>();
   if(number == 0)
   {
      digits.add(number);
   }
   if(number < 0)
   {
      number *= -1;
      flag=true;
   }
   while (number != 0)
   {
      digits.add(number % 10);
      number /= 10;
   }
   arr = new int[digits.size()];
   for(int i = 0; i < digits.size(); i++)
   {
      arr[i] = digits.get(i);
   }
   if(flag){
       arr[digits.size()-1]*=-1;
   }
   return arr;
}
0
maxx777 10 Дек 2014 в 20:31
Ооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооот
 – 
byerlyfactor
10 Дек 2014 в 20:33
Если этот ответ помог вам, отметьте его как принятый. Если вам нужно какое-то объяснение, то комментируйте.
 – 
maxx777
10 Дек 2014 в 20:57

Другой способ сделать это:

public static int[] digitExtractor(int number) {
    boolean negative = number < 0;
    String myNumber = String.valueOf(number);
    myNumber = new StringBuilder(myNumber).reverse().toString();
    int size = negative ? myNumber.length() - 1 : myNumber.length();
    int[] arr = new int[size];

    for (int i = 0; i < size; i++) {
        arr[i] = Character.getNumericValue(myNumber.charAt(i));
    }

    if (negative) {
        arr[size - 1] = 0 - arr[size - 1];
    }
    return arr;
}
0
Anarki 10 Дек 2014 в 21:18