The Java Program: Table.java
1 // Table.java -- print a delimiter separated table
2
3 import java.util.StringTokenizer;
4 import java.io.IOException;
5 import java.io.InputStreamReader;
6 import java.io.BufferedReader;
7
8 public class Table {
9
10 // left justify a string by padding with blanks
11 final static String padding = " ";
12 public static String fmt (String s, int width) {
13 final int n = Math.max (width-s.length(), 0);
14 return (s+padding.substring(0,n));
15 }
16
17 public static void main (String args[]) throws IOException {
18 final String delim = args.length==1?args[0]:":";
19 final String empty = "[empty]";
20 final int width = 15;
21 BufferedReader br = new BufferedReader (
22 new InputStreamReader (System.in));
23 while (true) {
24 final String line = br.readLine();
25 if (line==null) break;
26 final StringTokenizer st = new StringTokenizer(line,delim,true);
27 boolean field=true; // initially expecting a field
28 while (st.hasMoreTokens()) {
29 final String token = st.nextToken();
30 if (token.indexOf (delim)==-1) {
31 System.out.print (fmt(token,width)); // not a delimiter
32 field = false;
33 } else if (field) {
34 System.out.print (fmt(empty,width)); // missing field
35 field = true;
36 } else {
37 field = true;
38 }
39 }
40 if (field) {
41 // The line ended with a delimiter; a field is missing
42 System.out.print (fmt(empty,width));
43 }
44 System.out.println();
45 }
46 }
47 }