It was a pretty standard scenario: Lindsay F took over a small project from another department, and that project had a lot of “fun” surprises. Despite accomplishing a fairly simple task – reading in a fixed-width datafile, cleaning up a few things, and inserting it into a database – the application managed to be incredibly complex. Personaly, I blame the language they used: Java.

You’d think that the developers of Java would provide a simple way to convert a string, say "000000028000", into a number, say 280.00. At least Java does provide the System.out.println method. As the comments show, that proved to be an invauable tool in solving this almost impossible string-to-number conversion task ...

if (amount != null && amount.trim().length() > 0) {
  for (int i = 0; i < amount.length(); i++) {
    char c = amount.charAt(i);
    // System.out.println(i + "  " + String.valueOf(c));
    if (!String.valueOf(c).equals("0")) {
    //   System.out.println(i);
      if (amount.substring(i).endsWith("00")) {
        amount = amount.substring(i,amount.length()-2) + ".00";
      } else {
        //System.out.println("old amount" + amount);
        if (i+2 < amount.length()) {
          amount = amount.substring(i,amount.length()-2) + "." + 
              amount.substring(amount.length()-2,amount.length());
        } else {
          if (i+2 == amount.length()) {
            amount = "0." + amount.substring(i);
          } else {
            amount = "0.0" + amount.substring(i);
          }
        }
        //System.out.println("new amount" + amount);
      }
      break;
    }
  }
}