2014-12-10 3 views
0

문제 :이 메서드에는 정수 하나의 매개 변수가 있습니다. 정수를 역순으로 개별 자릿수로 나눕니다. 결과는 역순으로 개별 숫자를 포함하는 배열이됩니다.디지트 추출기

시험기 : 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

. 그러나 마이너스 부호를 유지하려면 -1로 다시 곱해야합니다. – maxx777

+0

그것은 부정적인 것이 순서대로 바뀌지 않는다는 것을 목적으로합니까? – EpicPandaForce

답변

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; 
} 
+0

오오오, 이제는 완벽하게 이해합니다. 고마워요! – byerlyfactor

+0

@byerlyfactor이 답변으로 도움이 되었다면 받아 들일 수있는 것으로 표시하십시오. 설명이 필요하면 의견을 말하십시오. – maxx777

0

이 작업을 수행하는 또 다른 방법 : 당신은 -1로 음수를 다중화 된하고이 OS를 바르게 수행

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; 
}