Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

7.3.13 Tulostuksen muotoilu ja apumetodit

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:

java-alk\Kuutio4.java - monikulmion tulostus muotoillusti

	/**
	 * 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ää.");
	  }
	}

Tehtävä 7.5 Apumetodit

Mieti miksi edellinen Java-ohjelma tulostaa tiedot seuraavassa muodossa:
	0        1         2         3         4
	1234567890123456789012345678901234567890
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
	        Kuutiossa on  8 kärkeä,
	                      6 sivutasoa ja
	                     12 särmää. 


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys