2005-04-26

Java Formatting Currency and Dates

The easiest way to display a double in the local currency is to get an instance of NumberFormat currency formatter and use its format() method. The following example ...
import java.text.NumberFormat;

public class CurrencyFormatExample {
  public static void main(String[] argv) {
    NumberFormat cf = NumberFormat.getCurrencyInstance();
    double cost = 19.51;
    System.out.println("Cost = " + cf.format(cost));
  }
}
... produces ...
Cost = $19.51
Similarly, the easiest way to display a date is to get an instance of a DateFormat date formatter and use its format() method. Choose different types of date formatters to produce shorter or longer output. The following example creates four different data formatters ...
import java.text.DateFormat;
import java.util.Date;

public class DateFormatExample {
  public static void main(String[] argv) {
    DateFormat dfShort = DateFormat.getDateInstance(DateFormat.SHORT);
    DateFormat dfMedium = DateFormat.getDateInstance(DateFormat.MEDIUM);
    DateFormat dfLong = DateFormat.getDateInstance(DateFormat.LONG);
    DateFormat dfFull = DateFormat.getDateInstance(DateFormat.FULL);
    Date today = new Date();
    System.out.println("Today is ...");
    System.out.println(dfShort.format(today));
    System.out.println(dfMedium.format(today));
    System.out.println(dfLong.format(today));
    System.out.println(dfFull.format(today));
  }
}
... and produces ...
Today is ...
26/04/05
26/04/2005
26 April 2005
Tuesday, 26 April 2005

2005-04-21

Misc: Robust self serve petrol process

It was a busy evening at the Shell. I had to wait to refuel because one of the bowsers in my line wasn't working. Then I had to join a long queue to pay because there was only one cashier. "Pump 4, please," I said to the cashier when I reached the counter. The cashier looked puzzled. "Are you sure? It's been paid." I went out and double-checked. "Yep, it's 4." We worked out that someone else had paid the wrong bowser (mine) and since his or her amount was less than mine, I paid for the petrol from the other bowser and count myself lucky. Why don't customers pay the wrong bowser more often? Attendents can't match the person paying to the bowser. Perhaps by evolution, the self serve process is robust because:
  1. You can't pay for a bowser that is still pumping, so you have to quote a bowser that is both idle and not paid.
  2. If you quote the wrong bowser number, the person who used that bowser is probably in the shop and would hear you.
So, the incident happened because it was busy, the other person finished quickly, paid my bowser when I had just finished but I hadn't yet walked into the shop.

2005-03-15

Misc: On-line shopping for Region 4 DVDs

What a sad experience looking for Region 4 DVDs in Australian on-line shops; same prices (plus / minus 10%), same items, same unavailable items, minimal user interfaces to their on-line catalogues and eye candy that takes forever to load. The only substantial difference is how each shop calculates shipping costs! No reviews (except HMV) and no user history; nothing to draw me back. Compare prices with GetOnce and pick the cheapest shop.

2005-03-04

Misc: Procrastination

I finally created a blog after procrastinating for months. I knew I was going to do it because I wanted to publish something occasionally but as every procrastinator knows, some other task jumps to the front of our mental priority list and we never get around to it. Until today.