/** reverse: given a String, reverse it */ public class reverse { /** Given String original, produce a new String in reverse order Note: to call reverse() from main(), I had to declare it static. This program does not construct any objects. */ static String reverse(String original) { int len=original.length(); //length of original String StringBuffer copy=new StringBuffer(original); //copy the String //A String is immutable, so I copy it into a String so I can modify it. //Above statement creates a StringBuffer as a copy of original String int j=0; while(j < original.length()) //invariant: 0 < j < original.length { copy.setCharAt(j, original.charAt(len-j-1)); //assign a char from original String into copy StringBuffer j++; //increment } return copy.toString(); //convert StringBuffer back to String } /** test reverse: passing in "golf" should return "flog" */ public static void main(String args[]) { System.out.println("reverse of golf is " + reverse("golf") ); } }