我的程序应该采用随机整数并反转它们。它目前适用于长度不超过十位的所有正整数。
$this->cs->SetFilter('filter_id', array(1));
$this->cs->SetFilter('filter_id', array(46));
我一直无法找到让程序返回负数反转的方法。最简单的方法是什么?
答案 0 :(得分:7)
根据上面的评论,看起来你想要反转-123为-321。如果是这样,我认为这段代码应该有效:
public static void reverse(int number) {
if (number < 0) {
System.out.print("-");
reverse(number * -1);
} else if (number < 10) {
System.out.println(number);
} else {
System.out.print(number % 10);
reverse(number / 10);
}
}
(我放弃了&& number > 0
,因为如果输入正好是0
,你就会有一个无限循环。)
注意:此代码将为StackOverflowError
提供number == Integer.MIN_VALUE
,因为-Integer.MIN_VALUE == Integer.MIN_VALUE
。您可以按如下方式解决此问题:
if (number < 0) {
System.out.print("-");
if (number == Integer.MIN_VALUE) {
System.out.print(-(number % 10));
number /= 10;
}
reverse(-number);
} else if ...
答案 1 :(得分:0)
我希望这种方法可以帮助你
public static void reverse(int number) {
if (number < 10 && number > 0) {
System.out.println(number);
return;
} else if (number > 0) {
System.out.print(number % 10);
reverse(number / 10);
} else {
System.out.print(number % 10);
reverse((number / 10) * -1);
}
}
这里我们将最后一个元素打印为负元素,之后我们将它与-1相乘,以便其余元素为正,正循环将从第二次开始。