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)
// {
// }
}
}

Edited 3 Years Ago by Dani: Formatting fixe

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

int string r;

  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)
  // {
 
 
  // }
}
}

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);
  }
 }
This article has been dead for over six months. Start a new discussion instead.