Secondo me sbagli nelle operazioni dentro al while...io farei una cosa così:
codice:
class StringUtils
{
	public static String reverse(String a )
	{
		String newString = new String();
                i = a.length() - 1;

		while( i >= 0 )
		{
			newString = newString + a.charAt(i);
                        i--;
		}
		return newString;
	}
}
Non l'ho provato ma dovrebbe funzionare ed è molto più semplice di quello che hai fatto tu...

Ciao.