2016-11-06 1 views
0

어떻게하면 다음과 같은 허용 음수를 만들고이를 양수로 처리 할 수 ​​있습니까? 전의. -91 = 10 현재 int n을 취하고 모든 숫자를 추가하는 데 적합하지만 긍정적 인 경우에만 작동합니다. 감사!숫자의 합 (INC. 음수)

public static int sumOfDigits(int n) { 
    int sum = 0; 
    while (n > 0) { 
     sum += n % 10; 
     n = n/10; 
    } 
    return sum; 
} 
+0

n = Math.abs (n). 여기에는 재귀가 없습니다. 왜 그 제목? –

+0

@JBNizet'n = Math.abs (n)'이 'Integer.MIN_VALUE'에 대해 실패합니다. – kgeorgiy

답변

2

간단한 해결책 : 함수의 첫 번째 줄에 추가 n = Math.abs(n). 이 솔루션은 Integer.MIN_VALUE을 제외한 모든 숫자에 적용됩니다.

항상 올바른 해결책 : 루프 조건을 n != 0으로 바꾸고 결과로 Math.abs(sum)을 반환하십시오.

+0

고마워, 새로운 것을 배웠다! – Lanie909

0
public static int sumOfDigits(int n) { 
    if (n == 0) return 0; 
    else return (n % 10) + sumOfDigits(n/10); 
} 
+0

OP가 비 재귀 적 방법을 사용함에 따라 약간의 주석 달기로 할 수 있음 – smac89

+0

이 글의 첫 번째 버전에서 작성자는 자신의 기능을 계산하는 재귀 적 방법을 요청했습니다. 따라서 재귀 버전을 추가했습니다. – biro

+0

음수에 대해 0을 반환합니다. 내가 묻는 것 같지 않습니다 ... – assylias