The System.out.printf method has predefined formats for printing integers, floating-point numbers, and other data types. But it is also extensible. If you use the S format, you can print any class that implements the Formattable interface. That interface has a single method:

   void formatTo(Formatter formatter, int flags, int width, int precision)

In this exercise, you should make the BankAccount class implement the Formattable interface. Ignore the flags and precision and simply format the bank balance, using the given width. In order to achieve this task, you need to get an Appendable reference like this:

   Appendable a = formatter.out();
Appendable
is another interface with a method
   void append(CharSequence sequence)


CharSequence is yet another interface that is implemented by (among others) the String class. Construct a string by first converting the bank balance into a string and then padding it with spaces so that it has the desired width. Pass that string to the append method.

Complete the following files:

BankAccount.java

FormatTester2.java

Use the following file:

FormatTester.java

/**
   Tests the use of the Formattable interface.
*/
public class FormatTester
{
   public static void main(String[] args)
   {
      BankAccount account1 = new BankAccount(1000);
      BankAccount account2 = new BankAccount(55);
      BankAccount account3 = new BankAccount(345);
      BankAccount account4 = new BankAccount(99000);

      System.out.printf("|%10s|%10s|%10s|%10s|%n", account1, account2, account3, account4);
      System.out.println("Expected: |    1000.0|      55.0|     345.0|   99000.0|");
   }
}