问题:该方法有一个参数为整数。将整数以相反的顺序分解为单个数字的序列。结果将是一个包含相反顺序的单个数字的数组。
测试仪: 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 :(得分:0)
阅读我的评论,试试这个:
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;
}
答案 1 :(得分:0)
另一种方法:
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;
}