回答編集履歴

1

コード化

2017/03/18 02:46

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -1 +1,41 @@
1
1
  負数なら一旦プラスにしてフラグを立ててから桁を合計し、フラグを見てマイナスをつければいいのでは
2
+
3
+
4
+
5
+ 正直この程度の処理で再帰を使うのは好きではないので…
6
+
7
+ ```java
8
+
9
+ public static long sumOfDigits(long n){
10
+
11
+ // nが負数か
12
+
13
+ boolean negate = n < 0;
14
+
15
+ int sum = 0;
16
+
17
+ // 負数ならマイナスをかけてプラスに変換
18
+
19
+ if (negate) {
20
+
21
+ n = -n;
22
+
23
+ }
24
+
25
+ // 桁合計
26
+
27
+ while (n > 0) {
28
+
29
+ sum = n % 10;
30
+
31
+ n /= 10;
32
+
33
+ }
34
+
35
+ // 最初が負数だったならマイナスをつけて返す、そうでないならそのまま
36
+
37
+ return negate ? -sum : sum;
38
+
39
+ }
40
+
41
+ ```