## Sunday, 25 December 2016

### Chapter 1 Exercise 5, Introduction to Java Programming, Tenth Edition Y. Daniel LiangY.

15.5 (Create an investment-value calculator)
Write a program that calculates the future value of an investment
at a given interest rate for a specified number of years.

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class Exercise_05 extends Application {

@Override
public void start(Stage primaryStage) throws Exception {

LoanInvestCalcPane calcPane = new LoanInvestCalcPane();

primaryStage.setScene(new Scene(calcPane, calcPane.getPrefWidth(), calcPane.getPrefHeight()));
primaryStage.setTitle("Simple calculator");
primaryStage.show();
}

public static void main(String[] args) {

Application.launch(args);
}

private class LoanInvestCalcPane extends GridPane {

Label lbInvestAmount = new Label("Invest Amount:");
TextField tfInvestAmount = new TextField();

Label lbNumberOfYears = new Label("Number Of Years:");
TextField tfNumberOfYears = new TextField();

Label lbAnnualInterestRate = new Label("Annual Interest Rate:");
TextField tfAnnualInterestRate = new TextField();

Label lbFutureValue = new Label("Future Value:");
TextField tfFutureValue = new TextField();

Button btCalc = new Button("Calculate");

private LoanInvestCalcPane() {

// Create layout
setAlignment(Pos.CENTER);
setHgap(10);
setVgap(10);

HBox buttons = new HBox();
buttons.setAlignment(Pos.BOTTOM_RIGHT);
btCalc.setOnAction(e-> calcFutureValue());

// Editing TextField settings
TextField[] textFields = (TextField[])getArray(
tfInvestAmount, tfNumberOfYears, tfAnnualInterestRate, tfFutureValue);

for (TextField tf : textFields) {
tf.setAlignment(Pos.BASELINE_RIGHT);
}
tfFutureValue.setDisable(true);

}

private Object[] getArray(Object... objects) {
Object[] temp = new TextField[objects.length];
for (int i = 0; i < objects.length; i++) {
temp[i] = objects[i];
}
return temp;
}

public void calcFutureValue() {
double investmentAmount = Double.parseDouble(tfInvestAmount.getText());
double years = Double.parseDouble(tfNumberOfYears.getText());
double monthInterestRate = Double.parseDouble(tfAnnualInterestRate.getText()) / 12 / 100;

double futureValue = investmentAmount * Math.pow(1 + monthInterestRate, years * 12);
tfFutureValue.setText(String.format("\$%.2f", futureValue));
}
}
}