You shouldn't use "\n", especially in a printf() where you should use "%n" instead.
In printf, "%s" will print a String using the same number of characters as the String contains.
When you say "justify right" you'd want to pad the string like "%30s". This will allocate 30 characters for the String and display it right justified. To display it left justified use "%-30s". Note that if your string is more than 30 characters it will be printed as wide as nessesary to print all characters in your string, thus throwing off your column alignment.
You can leave spaces or other text between fields in the format string:
Have you tried that using longer names? Like "Bartholomew"? The \t is only going to be consistent if your names are all under 8 characters. Longer names will cause the | and the email address to get pushed out to the next tab stop. You should try short names, too, like Stu, Tim, and Al. Tab stops are typically in multiples of 4 or 8, I can't be sure but it's one of those.
The best ideas are the crazy ones. If you have a crazy idea and it works, it's really valuable.—Kent Beck