I am attempting to learn Java and am having a time of it. I am wanting to write a program that will allow a user to input number...then output them in reverse order. If someone would be so kind as to look at it and provide me with suggestions or hints...or for those who are extremely kind hearted feel free to tweak it for me and repost. On behalf of all those who receive assistance here, "Thanks in advance!" Code is as follows...and is attached (.java) as well.

//*****************************************
// revstring - recursively reverse a string
// Name:
// Date:
//*****************************************
import java.io.*;


public class RevString
{

//******************************************************
// main method reads a string input by the user and 
// calls recursive methods that print string in 
//reverse
// and return reversed string
//******************************************************
public static void main(String[] args) throws 
IOException
{
InputStreamReader isr = new InputStreamReader 
(System.in);
BufferedReader stdin = new BufferedReader (isr);

System.out.println("Enter a String");
String input = stdin.readLine();
System.out.print("The input in reverse is --> ");

rev(input);
System.out.println();

// String strrev = retrev(input);
// System.out.println();
// System.out.println("The returned string is --> " + 
// strrev);

}
// ****************************************************
// recursive method that prints the reverse of a string
// public static void rev (string r)
{
String strRemaining = "1";
String str = String.valueOf(r);
int iLen = str.length(); //get length for 
indexing substrings

if (iLen <= 1)
System.out.println(str);

else
{
//save the x-1 characters of string
strRemaining = str.substring(0, (iLen - 1));
//put the last character into substring
str = str.substring((iLen - 1), iLen);
//print last character
System.out.print(str);
//revert string back to number
r = Integer.valueOf(strRemaining).intValue();
//call itself recursively
Reverse(r);
}
//*****************************************************
// recursive method that returns the reverse of a string
// public static String retrev(String r)
// {
// }
}
}

Recommended Answers

All 2 Replies

the easiest way to break a number down right to left is to use the mod function
rightDigit = wholeNumber % 10 will give you the right most digit then all you have to do is subtract the rightDigit from the wholeNumber, divide it by 10 and pass the wholeNumber back into the parameter

You could always put it into a StringBuffer and reverse it:

import java.util.*;

public class ReverseTest
{
	public static void main(String[] args)
	{
		int reverseThisNumber = 12345678;
		StringBuffer sb = new StringBuffer(""+reverseThisNumber);
		System.out.println(sb.reverse().toString());
	}
}

Or you could use a recursive String reverse method:

public String reverse(String arg)
 {
	


	String tmp = null;
	if (arg.length() == 1)
	{
		return arg;
	}
	
	else
	{

		//extract the last char
		String lastChar = arg.substring(arg.length()-1,arg.length());
		
		
		//extract the remaining chars
		String remainingString = arg.substring(0, arg.length() -1);

		tmp = lastChar + reverse(remainingString);
		System.out.println(tmp);
		return tmp;
			
	}
     
  }

Then you could go with highergrounds idea and use modulus:

public int revDigits (int num) { 
  if (num < 10) {
      return num;
  } else {
      int s = num / 10;
      int d = num % 10;

      int i = revDigits(s);

      return (d * 10) + i; // incorrect

      // need to find out how many digits in d:
      //return (d * 10^(num digits in d)) + i);
  }
 }
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.