// This example is from the book "Java in a Nutshell, Second Edition".
// Written by David Flanagan. Copyright (c) 1997 O'Reilly & Associates.
// You may distribute this source code for non-commercial purposes only.
// You may study, modify, and use this example for any purpose, as long as
// this notice is retained. Note that this example is provided "as is",
// WITHOUT WARRANTY of any kind either expressed or implied.
import java.text.*;
import java.util.Date;
/**
* A partial implementation of a hypothetical stock portfolio class.
* We use it only to demonstrate number and date internationalization.
*/
public class Portfolio {
EquityPosition[] positions;
Date lastQuoteTime = new Date();
public void print() {
// Obtain NumberFormat and DateFormat objects to format our data.
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);
// Print some introductory data.
System.out.println("Portfolio value at " +
fulldate.format(lastQuoteTime) + ":");
System.out.println("Symbol\tShares\tBought On\tAt\t" +
"Quote\tChange");
// Then display the table using the format() methods of the Format objects.
for(int i = 0; i < positions.length; i++) {
System.out.print(positions[i].name + "\t");
System.out.print(number.format(positions[i].shares) + "\t");
System.out.print(shortdate.format(positions[i].purchased) + "\t");
System.out.print(price.format(positions[i].bought) + "\t");
System.out.print(price.format(positions[i].current) + "\t");
double change =
(positions[i].current - positions[i].bought)/positions[i].bought;
System.out.println(percent.format(change));
}
}
static class EquityPosition {
String name; // Name of the stock.
int shares; // Number of shares held.
Date purchased; // When purchased.
double bought, current; // Purchase price and current price (per share).
EquityPosition(String n, int s, Date when, double then, double now) {
name = n; shares = s; purchased = when; bought = then; current = now;
}
}
}
|