Gyakorlati alapok I.

A System.out.printf() és a System.out.format()

 

Az előző fejezet alapszinten, de kellő részletességgel ismertette a System.out.println() lehetőségeit. Segítségével főként szöveget írtunk ki a konzolra, amibe persze belefér számkiírás is.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Azonban lehetőségünk van számok (dátumot is beleértve) még precízebb, aprólékosabb megjelenítésére a System.out.printf() és a System.out.format() függvények segítségével, de lényegében azonos funkcionalitással.

 

www.informatika-programozas.hu - További információk!

Tapasztalt programozók felismerhetik az ősrégi, már a C programozási nyelvben is jelenlévő printf() metódust. Szintaktikája, használata is egészen hasonló a Java-beli printf() metódushoz, természetesen nem véletlenül, hiszen a C programozási nyelv a Java egyik közvetlen ősének tekinthető.

 

A precíz számformázásról a függvény paraméterlistájában...

 

System.out.printf(paraméterlista)

System.out.format(paraméterlista)

 

...átalakítók (converter) és egyéb, járulékos jelzések (flag) gondoskodnak. Ezeket a szimbólumokat a paraméterlistában a...

 

"%...%n"

 

...karakterek közé kell tennünk.

 

Nézzük meg a szabványos, azaz hivatalos Java-dokumentációs converter és flag listát, amelyet azonnali példákkal ellenőrzünk is!

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {

    int a = 4444;
    System.out.printf("%d%n", a);
    }
}
 

Végeredmény:

4444

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Ha a formázási utasítást elhagyjuk ("%d%n"), a rendszer hibát jelez! Arra is vigyázzunk, hogy a paraméterek között nem plusz jel (+), hanem vessző (,) van!

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {

    float a = 4444;
    System.out.printf("%f%n", a);
    }
}
 

Végeredmény:

4444.000000

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    System.out.format("%tB%n", calendar);
    }
}

 

Végeredmény:

April

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    System.out.format("%td%n", calendar);
    }
}

 

Végeredmény:

02

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    System.out.format("%te%n", calendar);
    }
}

 

Végeredmény:

2

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    System.out.format("%ty%n", calendar);
    }
}

 

Végeredmény:

20

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    System.out.format("%tY%n", calendar);
    }
}

 

Végeredmény:

2020

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    System.out.format("%tl%n", calendar);
    }
}

 

Végeredmény:

10

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    System.out.format("%tM%n", calendar);
    }
}

 

Végeredmény:

43

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    System.out.format("%tp%n", calendar);
    }
}

 

Végeredmény:

am

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    System.out.format("%tD%n", calendar);
    }
}

 

Végeredmény:

04/02/20

 

(2020. ápilis 2.)

 

Természetesen a dátumot, illetve az időt a fenti konverterek kombinációiból is összeállíthatjuk:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    System.out.format("%tB %te, %tY%n", calendar, calendar, calendar);
    }
}

 

Végeredmény:

April 2, 2020

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    System.out.format("%tl:%tM %tp%n", calendar, calendar, calendar);
    }
}

 

Végeredmény:

11:02 am

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int a = 4444;
    System.out.printf("%07d%n", a);
    }
}

 

Végeredmény:

0004444

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int a = 4444;
    System.out.printf("%07d%n", a);
    }
}

 

Végeredmény:

   4444

 

(3 üres karakter a szám elején)

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int a = 4444;
    System.out.printf("%+d%n", a);
    }
}

 

Végeredmény:

+4444

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int a = -4444;
    System.out.printf("%+d%n", a);
    }
}

 

Végeredmény:

-4444

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    double PI = Math.PI;
    System.out.printf("%.4f%n", PI);
    }
}

 

Végeredmény:

3.1416

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    double PI = Math.PI;
    System.out.printf("%10.4f%n", PI);
    }
}

 

Végeredmény:

    3.1416

 

(4 üres karakter a szám elején)

 

Amint az már említésre került, a System.out.printf() és a System.out.format() függvények azonos funkcionalitással rendelkeznek, ezért vígan felcserélhetők egymással. Példáink során mi mindvégig a System.out.printf() metódust használtuk, ám a System.out.format() függvény is ugyanazon eredményeket fogja biztosítani:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    double PI = Math.PI;
    System.out.format("%.4f%n", PI);
    }
}

 

Végeredmény:

3.1416

 

Természetesen lehetőségünk van a függvényekkel karakterek és karakterfüzérek (String) kiírására is. Az alábbi futtatható Java-kódokban ilyen módon használjuk fel 2 függvényünket és velük gyakran használatos karakterek ASCII-kódjait listázzuk ki:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int karakter;
    for(karakter = 33; karakter <= 122; karakter++) {
        System.out.printf("ASCII ertek = %d, Karakter = %c\n", karakter, karakter);
        }
    }
}

 

Végeredmény:

ASCII ertek = 33, Karakter = !
ASCII ertek = 34, Karakter = "
ASCII ertek = 35, Karakter = #
ASCII ertek = 36, Karakter = $
ASCII ertek = 37, Karakter = %
ASCII ertek = 38, Karakter = &
ASCII ertek = 39, Karakter = '
ASCII ertek = 40, Karakter = (
ASCII ertek = 41, Karakter = )
ASCII ertek = 42, Karakter = *
ASCII ertek = 43, Karakter = +
ASCII ertek = 44, Karakter = ,
ASCII ertek = 45, Karakter = -
ASCII ertek = 46, Karakter = .
ASCII ertek = 47, Karakter = /
ASCII ertek = 48, Karakter = 0
ASCII ertek = 49, Karakter = 1
ASCII ertek = 50, Karakter = 2
ASCII ertek = 51, Karakter = 3
ASCII ertek = 52, Karakter = 4
ASCII ertek = 53, Karakter = 5
ASCII ertek = 54, Karakter = 6
ASCII ertek = 55, Karakter = 7
ASCII ertek = 56, Karakter = 8
ASCII ertek = 57, Karakter = 9
ASCII ertek = 58, Karakter = :
ASCII ertek = 59, Karakter = ;
ASCII ertek = 60, Karakter = <
ASCII ertek = 61, Karakter = =
ASCII ertek = 62, Karakter = >
ASCII ertek = 63, Karakter = ?
ASCII ertek = 64, Karakter = @
ASCII ertek = 65, Karakter = A
ASCII ertek = 66, Karakter = B
ASCII ertek = 67, Karakter = C
ASCII ertek = 68, Karakter = D
ASCII ertek = 69, Karakter = E
ASCII ertek = 70, Karakter = F
ASCII ertek = 71, Karakter = G
ASCII ertek = 72, Karakter = H
ASCII ertek = 73, Karakter = I
ASCII ertek = 74, Karakter = J
ASCII ertek = 75, Karakter = K
ASCII ertek = 76, Karakter = L
ASCII ertek = 77, Karakter = M
ASCII ertek = 78, Karakter = N
ASCII ertek = 79, Karakter = O
ASCII ertek = 80, Karakter = P
ASCII ertek = 81, Karakter = Q
ASCII ertek = 82, Karakter = R
ASCII ertek = 83, Karakter = S
ASCII ertek = 84, Karakter = T
ASCII ertek = 85, Karakter = U
ASCII ertek = 86, Karakter = V
ASCII ertek = 87, Karakter = W
ASCII ertek = 88, Karakter = X
ASCII ertek = 89, Karakter = Y
ASCII ertek = 90, Karakter = Z
ASCII ertek = 91, Karakter = [
ASCII ertek = 92, Karakter = \
ASCII ertek = 93, Karakter = ]
ASCII ertek = 94, Karakter = ^
ASCII ertek = 95, Karakter = _
ASCII ertek = 96, Karakter = `
ASCII ertek = 97, Karakter = a
ASCII ertek = 98, Karakter = b
ASCII ertek = 99, Karakter = c
ASCII ertek = 100, Karakter = d
ASCII ertek = 101, Karakter = e
ASCII ertek = 102, Karakter = f
ASCII ertek = 103, Karakter = g
ASCII ertek = 104, Karakter = h
ASCII ertek = 105, Karakter = i
ASCII ertek = 106, Karakter = j
ASCII ertek = 107, Karakter = k
ASCII ertek = 108, Karakter = l
ASCII ertek = 109, Karakter = m
ASCII ertek = 110, Karakter = n
ASCII ertek = 111, Karakter = o
ASCII ertek = 112, Karakter = p
ASCII ertek = 113, Karakter = q
ASCII ertek = 114, Karakter = r
ASCII ertek = 115, Karakter = s
ASCII ertek = 116, Karakter = t
ASCII ertek = 117, Karakter = u
ASCII ertek = 118, Karakter = v
ASCII ertek = 119, Karakter = w
ASCII ertek = 120, Karakter = x
ASCII ertek = 121, Karakter = y
ASCII ertek = 122, Karakter = z

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int karakter;
    for(karakter = 33; karakter <= 122; karakter++) {
        System.out.format("ASCII ertek = %d, Karakter = %c\n", karakter, karakter);
        }
    }
}

 

Végeredmény:

ASCII ertek = 33, Karakter = !
ASCII ertek = 34, Karakter = "
ASCII ertek = 35, Karakter = #
ASCII ertek = 36, Karakter = $
ASCII ertek = 37, Karakter = %
ASCII ertek = 38, Karakter = &
ASCII ertek = 39, Karakter = '
ASCII ertek = 40, Karakter = (
ASCII ertek = 41, Karakter = )
ASCII ertek = 42, Karakter = *
ASCII ertek = 43, Karakter = +
ASCII ertek = 44, Karakter = ,
ASCII ertek = 45, Karakter = -
ASCII ertek = 46, Karakter = .
ASCII ertek = 47, Karakter = /
ASCII ertek = 48, Karakter = 0
ASCII ertek = 49, Karakter = 1
ASCII ertek = 50, Karakter = 2
ASCII ertek = 51, Karakter = 3
ASCII ertek = 52, Karakter = 4
ASCII ertek = 53, Karakter = 5
ASCII ertek = 54, Karakter = 6
ASCII ertek = 55, Karakter = 7
ASCII ertek = 56, Karakter = 8
ASCII ertek = 57, Karakter = 9
ASCII ertek = 58, Karakter = :
ASCII ertek = 59, Karakter = ;
ASCII ertek = 60, Karakter = <
ASCII ertek = 61, Karakter = =
ASCII ertek = 62, Karakter = >
ASCII ertek = 63, Karakter = ?
ASCII ertek = 64, Karakter = @
ASCII ertek = 65, Karakter = A
ASCII ertek = 66, Karakter = B
ASCII ertek = 67, Karakter = C
ASCII ertek = 68, Karakter = D
ASCII ertek = 69, Karakter = E
ASCII ertek = 70, Karakter = F
ASCII ertek = 71, Karakter = G
ASCII ertek = 72, Karakter = H
ASCII ertek = 73, Karakter = I
ASCII ertek = 74, Karakter = J
ASCII ertek = 75, Karakter = K
ASCII ertek = 76, Karakter = L
ASCII ertek = 77, Karakter = M
ASCII ertek = 78, Karakter = N
ASCII ertek = 79, Karakter = O
ASCII ertek = 80, Karakter = P
ASCII ertek = 81, Karakter = Q
ASCII ertek = 82, Karakter = R
ASCII ertek = 83, Karakter = S
ASCII ertek = 84, Karakter = T
ASCII ertek = 85, Karakter = U
ASCII ertek = 86, Karakter = V
ASCII ertek = 87, Karakter = W
ASCII ertek = 88, Karakter = X
ASCII ertek = 89, Karakter = Y
ASCII ertek = 90, Karakter = Z
ASCII ertek = 91, Karakter = [
ASCII ertek = 92, Karakter = \
ASCII ertek = 93, Karakter = ]
ASCII ertek = 94, Karakter = ^
ASCII ertek = 95, Karakter = _
ASCII ertek = 96, Karakter = `
ASCII ertek = 97, Karakter = a
ASCII ertek = 98, Karakter = b
ASCII ertek = 99, Karakter = c
ASCII ertek = 100, Karakter = d
ASCII ertek = 101, Karakter = e
ASCII ertek = 102, Karakter = f
ASCII ertek = 103, Karakter = g
ASCII ertek = 104, Karakter = h
ASCII ertek = 105, Karakter = i
ASCII ertek = 106, Karakter = j
ASCII ertek = 107, Karakter = k
ASCII ertek = 108, Karakter = l
ASCII ertek = 109, Karakter = m
ASCII ertek = 110, Karakter = n
ASCII ertek = 111, Karakter = o
ASCII ertek = 112, Karakter = p
ASCII ertek = 113, Karakter = q
ASCII ertek = 114, Karakter = r
ASCII ertek = 115, Karakter = s
ASCII ertek = 116, Karakter = t
ASCII ertek = 117, Karakter = u
ASCII ertek = 118, Karakter = v
ASCII ertek = 119, Karakter = w
ASCII ertek = 120, Karakter = x
ASCII ertek = 121, Karakter = y
ASCII ertek = 122, Karakter = z