将负数输入数字反转程序

时间:2016-07-20 09:16:58

标签: java

我的程序应该采用随机整数并反转它们。它目前适用于长度不超过十位的所有正整数。

$this->cs->SetFilter('filter_id', array(1)); 
$this->cs->SetFilter('filter_id', array(46)); 

我一直无法找到让程序返回负数反转的方法。最简单的方法是什么?

2 个答案:

答案 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相乘,以便其余元素为正,正循环将从第二次开始。