import java.applet.*; import java.awt.*; import java.awt.event.*; /** Applet om de constante periodieke afbetaling * te berekenen bij gegeven kapitaal en periodieke * rentevoet. * @author Lieven Smits * @version 1.1 7/9/2000 */ public class AnnuiteitApplet extends Applet implements ActionListener { /** Rentevoet. Uitgedrukt in fracties van 0 tot 1, dus * 5 percent = 0.05 */ private TextField txtRentevoet; /** Looptijd van de lening = aantal afbetalingen. */ private TextField txtPerioden; /** Bedrag van het geleende kapitaal. */ private TextField txtKapitaal; /** Periodiek te betalen bedrag. */ private Label lblAnnuiteit; /** Knop om de berekening te activeren. */ private Button btnBereken; /** Construeer een applet met drie tekstvelden, * vier labels en een drukknop. */ public AnnuiteitApplet() { setLayout(new GridLayout(4, 2)); Label lblRentevoet = new Label("periodieke rentevoet"); add(lblRentevoet); txtRentevoet = new TextField(); add(txtRentevoet); Label lblPerioden = new Label("aantal perioden"); add(lblPerioden); txtPerioden = new TextField(); add(txtPerioden); Label lblKapitaal = new Label("ontleend kapitaal"); add(lblKapitaal); txtKapitaal = new TextField(); add(txtKapitaal); btnBereken = new Button("Bereken afbetaling"); add(btnBereken); lblAnnuiteit = new Label(); lblAnnuiteit.setAlignment(Label.RIGHT); add(lblAnnuiteit); btnBereken.addActionListener(this); } /** Lees de drie invoervelden, bereken de afbetaling * en toon ze in het daartoe bestemde labelveld. */ public void actionPerformed(ActionEvent evt) { /* Interpreteer de tekstvelden als getallen; dit kan een NumberFormatException opleveren! We zetten eerst de Strings naar Objecten om (Integer en Double) en gebruiken vervolgens de primitieve waarden van die objecten (intValue() en doubleValue()). We maken bewust geen gebruik van de efficientere statische methoden parseInt en parseDouble van de klassen Integer resp. Double, omdat parseDouble niet bestaat in Java versie 1.1: dat zou onze applet onleesbaar maken voor een aantal gangbare browsers. De stand-aloneapplicatie Annuiteit (zie paragraaf 7.7) heeft geen last van incompatibele browsers en gebruikt dus wel de moderne methoden. */ Double dRentevoet = new Double(txtRentevoet.getText()); Integer iPerioden = new Integer(txtPerioden.getText()); Double dKapitaal = new Double(txtKapitaal.getText()); // tussenresultaat: v = (1 + rentevoet)^perioden double v = 1.0; for (int k = 1; k <= iPerioden.intValue(); k++) v *= (1 + dRentevoet.doubleValue()); double dAnnuiteit = dKapitaal.doubleValue() * dRentevoet.doubleValue() * v / (v - 1); lblAnnuiteit.setText(String.valueOf(dAnnuiteit)); } }