Reputation: 71
My program is supposed to take in random integers and reverse them. It currently works for all positive integers that are no more than ten digits long.
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);
}
}
}
I've been having trouble finding a way for the program to return the reversals of negative numbers. What's the simplest way to do that?
Upvotes: 1
Views: 5778
Reputation: 60143
Per the comments above, it looks like you want the reverse of -123 to be -321. If so, I think this code should work:
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);
}
}
(I dropped the && number > 0
because you had an infinite loop if the input is exactly 0
.)
Note: this code will give a StackOverflowError
for number == Integer.MIN_VALUE
, since -Integer.MIN_VALUE == Integer.MIN_VALUE
. You can fix this as follows:
if (number < 0) {
System.out.print("-");
if (number == Integer.MIN_VALUE) {
System.out.print(-(number % 10));
number /= 10;
}
reverse(-number);
} else if ...
Upvotes: 8
Reputation: 87
I hope this method will help you
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);
}
}
here we are printing the last element as a negative element, after that we are multiplying it with -1 so that the rest of the elements will be positive and positive loop will proceed form the second time.
Upvotes: 0