问题:该方法有一个整型参数。将整数按相反顺序分解为一系列单独的数字。结果将是一个以相反顺序包含各个数字的数组。
测试仪: 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;
}我的代码可以工作,除了负数。我不知道该怎么解决它。有什么建议吗?
发布于 2014-12-11 01:31:30
阅读我的评论,并尝试这样做:
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;
}发布于 2014-12-11 02:13:05
另一种方法是:
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;
}https://stackoverflow.com/questions/27407063
复制相似问题