我的程序应该采用随机整数并将其取反。当前,它适用于所有不超过十位数的正整数。
import java.util.Scanner;
public class Program2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int input;
Scanner scanner = new Scanner(System.in);
System.out.print("Enter an integer: ");
input = scanner.nextInt();
System.out.print("Its reversal is ");
reverse(input);
System.out.println();;
}
public static void reverse(int number) {
if(number < 10 && number > 0) {
System.out.println(number);
return;
}
else {
System.out.print(number % 10);
reverse(number/10);
}
}
}
我一直在寻找程序返回负数反转的方法时遇到麻烦。最简单的方法是什么?
根据上面的评论,您似乎希望-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 ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句