2016-11-06 6 views
0

Wie kann ich die folgenden negativen Zahlen zulassen und behandelt sie als positiv. Ex. -91 = 10 Es funktioniert derzeit für Int n und Hinzufügen aller Ziffern, aber nur für Positives. Vielen Dank!Summe der Ziffern (INC. Negative Zahlen)

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). Hier gibt es überhaupt keine Rekursion. Warum der Titel? –

+0

@JBNizet 'n = Math.abs (n)' schlägt für 'Integer.MIN_VALUE' fehl. – kgeorgiy

Antwort

2

Einfache Lösung: add n = Math.abs(n) als die erste Zeile der Funktion. Diese Lösung funktioniert für alle Nummern außer Integer.MIN_VALUE.

Lösung immer korrigieren: Schleifenbedingung durch n != 0 ersetzen und als Ergebnis Math.abs(sum) zurückgeben.

+0

Vielen Dank, lernte etwas Neues! – Lanie909

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

Könnte etwas kommentieren, da OP eine nicht rekursive Methode verwendet – smac89

+0

In der ersten Version dieses Posts verlangte der Autor eine rekursive Methode, um seine Funktion zu berechnen. Daher habe ich eine rekursive Version hinzugefügt. – biro

+0

Gibt 0 für negative Zahlen zurück - ich glaube nicht, dass das gefragt wird ... – assylias