我如何使下列允许负数并将它们视为正数。防爆。 -91 = 10 它目前用于取整数并添加所有数字,但只适用于正数。谢谢!数字总和(INC。负数)
public static int sumOfDigits(int n) {
int sum = 0;
while (n > 0) {
sum += n % 10;
n = n/10;
}
return sum;
}
我如何使下列允许负数并将它们视为正数。防爆。 -91 = 10 它目前用于取整数并添加所有数字,但只适用于正数。谢谢!数字总和(INC。负数)
public static int sumOfDigits(int n) {
int sum = 0;
while (n > 0) {
sum += n % 10;
n = n/10;
}
return sum;
}
简单的解决方案:添加n = Math.abs(n)
作为函数的第一行。此解决方案适用于所有号码,但Integer.MIN_VALUE除外。
始终正确的解决方案:将环路条件替换为n != 0
,并返回Math.abs(sum)
作为结果。
非常感谢,学到了新东西! – Lanie909
n = Math.abs(n)。这里根本没有递归。为什么标题? –
@JBNizet'n = Math.abs(n)'对于'Integer.MIN_VALUE'失败。 – kgeorgiy