import java.text.*; import java.util.Date; /** * Osittainen versio hypoteettisesta osakesalkkuluokasta. Tällä esitellään * vain luku- ja päivämäärätietojen käsittelemistä kansainvälisessä * ohjelmassa. */ public class Portfolio { EquityPosition[] positions; Date lastQuoteTime = new Date(); public void print() { // Hankitaan NumberFormat- ja DateFormat-oliot, // joilla tiedot muotoillaan. NumberFormat number = NumberFormat.getInstance(); NumberFormat price = NumberFormat.getCurrencyInstance(); NumberFormat percent = NumberFormat.getPercentInstance(); DateFormat shortdate = DateFormat.getDateInstance(DateFormat.SHORT); DateFormat fulldate = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); // Tulostetaan otsikoita. System.out.println("Portfolio value at " + fulldate.format(lastQuoteTime) + ":"); System.out.println("Symbol Shares Bought On At " + "Quote Change"); // Sitten tulostetaan taulukko käyttäen hyväksi Format-olioiden // format()-metodeita. for(int i = 0; i < positions.length; i++) { System.out.print(positions[i].name + " "); System.out.print(number.format(positions[i].shares) + " "); System.out.print(shortdate.format(positions[i].purchased) + " "); System.out.print(price.format(positions[i].bought) + " "); System.out.print(price.format(positions[i].current) + " "); double change = (positions[i].current - positions[i].bought)/positions[i].bought; System.out.println(percent.format(change)); } } static class EquityPosition { String name; // Osakkeen nimi. int shares; // Osakkeiden määrä. Date purchased; // Milloin ostettu. double bought, current; // Ostohinta ja nykyarvo (per osake) EquityPosition(String n, int s, Date when, double then, double now) { name = n; shares = s; purchased = when; bought = then; current = now; } } }