C:llä olisi edellisen esimerkin tulostus helppo muotoilla kutsulla:
printf("%17s on %2d kärkeä,\n" ,TAHOKAS,KARKIA);
Javassa joudumme kuitenkin tekemään saman asian eteen aluksi joukon apumetodeja:
/** * Ohjelma tulostaa tietoja kuutiosta "siistissä" muodossa * @author Vesa Lappalainen * @version 1.0, 05.01.2003 */ class Kuutio4 { static final String TAHOKAS = "Kuutiossa"; static final int KARKIA = 8; static final int SIVUTASOJA = 6; static final int SARMIA = 12; /** * Palauttaa jonon s muotoiltuna vähintään len-pituiseksi * <pre> * Esim: fmt("2",3) => " 2" * fmt("2",-3) => "2 " * </pre> * @param s muotoiltava jono * @param len pituus, negatiivisella vasempaan laitaan, pos. oikeaan * @return muotoiltu jono */ static String fmt(String s,int len) { int needs = Math.abs(len) - s.length(); if ( needs <= 0 ) return s; StringBuffer fill = new StringBuffer(" "); while ( fill.length() < needs ) fill.append(" "); fill.delete(needs,1000); if ( len < 0 ) return s + fill; return fill + s; } /** * Tulostaa 2 merkkijonoa ja yhden kokonaisluvun siististi * @param s1 Ensimmäinen tulostettava jono * @param i tulostettava kokonaisluku * @param s2 toinen tulostettava jono */ static void tulosta(String s1, int i, String s2) { System.out.println(fmt(s1,20) + " " + fmt(String.valueOf(i),2) + " " + s2); } public static void main(String[] args) { tulosta(TAHOKAS + " on", KARKIA , "kärkeä,"); tulosta("" , SIVUTASOJA, "sivutasoa ja"); tulosta("" , SARMIA , "särmää."); } }
0 1 2 3 4 1234567890123456789012345678901234567890 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Kuutiossa on 8 kärkeä, 6 sivutasoa ja 12 särmää.