Jul 27

The Calendar class can be used to generate a simple calendar display.

private static void showMonth(Calendar cal) {
	int month = cal.get(Calendar.MONTH);
	int firstDayOfWeek = cal.getFirstDayOfWeek();

	// Display day names as headers

	cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
	for (int i=0; i<7; i++) {

		System.out.print(cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.getDefault()));
		System.out.print(" ");
		cal.add(Calendar.DATE, 1);
	}
	System.out.println();

	// Display dates in month

	cal.set(Calendar.DATE, cal.getMinimum(Calendar.DATE));

	// Now display the dates, one week per line

	StringBuilder week = new StringBuilder();

	while (month==cal.get(Calendar.MONTH)) {

		// Display date

		week.append(String.format("%3d ", cal.get(Calendar.DATE)));

		// Increment date

		cal.add(Calendar.DATE, 1);

		// Check if week needs to be printed

		if (cal.get(Calendar.MONTH)!=month) {

			// end of month
			// just need to output the month

			System.out.println(week);

		} else if (cal.get(Calendar.DAY_OF_WEEK)==firstDayOfWeek) {

			// new week so print out the current week
			// first check if any padding needed

			int padding = 28-week.length();
			if (padding>0) {

				// pad out start of week

				week.insert(0,
                                    String.format("%"+padding+"s", " "));
			}
			System.out.println(week);
			week.setLength(0);
		}
	}
}

written by objects \\ tags: , ,

Apr 15

public static String zeroPad(int value, int width) {
   return String.format("%0"+width+"d", value);
}

written by objects \\ tags: , , ,

Feb 23

Decimal format uses BigDecimal.ROUND_HALF_EVEN and prior to 1.6 this cannot be changed.
In 1.6 a setRoundingMethod() was added to allow the rounding strategy to be changed.

DecimalFormat df = NumberFormat.getNumberInstance();
df.setRoundingMode(1, RoundingMode.HALF_UP);
String formatted = df.format(12.345);

If you need an alternate rounding strategy prior to 1.6 then you need to use BigDecimal to do your formatting.

double d = 123.45;
BigDecimal bd = new BigDecimal(d);
bd.setScale(1, BigDecimal.ROUND_HALF_UP);
String formatted = bd.toString();

written by objects \\ tags: , , , ,