Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Help with try-catch blocks. I just can\'t seem them to work right. Help! import

ID: 3794471 • Letter: H

Question

Help with try-catch blocks. I just can't seem them to work right. Help!

import java.text.DecimalFormat;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.text.*;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.image.ImageView;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import javafx.application.Platform;

public class LoanComparison extends Application
{
    public static void main(String[] args) {
        launch(args);
    }
    // Creating and naming private variables for text fields(user input).
    private TextField LoanAmount = new TextField();
    private TextField NumberOfYears = new TextField();
    private TextArea ResultsTable = new TextArea();
    //Creating button that when pressed displays the results table.
    private Button ShowTable = new Button("Show Table");

    @Override
    public void start(Stage primaryStage)
    {
        //Creating new Border Pane
        final BorderPane pane = new BorderPane();
        //Creating HBox for user interface
        HBox Interface = new HBox(12);
        //Creating labels for text fields
        Label LoanAmt = new Label("Loan Amount: ");
        Label NumYears = new Label("Years: ");
        //Setting width of text fields
        LoanAmount.setPrefWidth(150);
        NumberOfYears.setPrefWidth(35);
        //Centering interface
        Interface.setAlignment(Pos.CENTER);
        //Adding TextFields, Labels and Button to Interface.
        Interface.getChildren().addAll(LoanAmt, LoanAmount, NumberOfYears, NumYears, ShowTable);
        //Adding Interface to the top of pane and ResultsTable to the center.
        pane.setTop(Interface);
        pane.setCenter(ResultsTable);

        //Setting margins and padding for
        BorderPane.setMargin(ResultsTable, new Insets(5, 1, 1, 1));
        pane.setPadding(new Insets(5, 5, 5, 5));
        //Method that caculates and outputs the results when the user presses the "Show Table" button
        ShowTable.setOnAction(e -> Calculate());
        //Setting the size the pane
        Scene scene = new Scene(pane,500, 500);
        //Naming the pane
        primaryStage.setTitle("Loan Comparison");
        primaryStage.setScene(scene);
        primaryStage.show();
        ResultsTable.setEditable(false);
    }

    private void Calculate()
    {

        //Declaring/Defining variables for calculations and try catch blocks.
        boolean ValidInput = true;
        Loan Lloan = new Loan ();
        //Try Catch block for catches vales less than 1000 or greater than 100000.
        try
        {

            Lloan.setAnnualInterestRate(5);
            Lloan.setLoanAmount(Double.parseDouble(LoanAmount.getText()));
            if (Lloan.getLoanAmount() < 1000 || Lloan.getLoanAmount() > 100000)
            {
                throw new Exception();

            }
        }
        catch(Exception e){
            new Alert(Alert.AlertType.ERROR,("Invalid Input: Only loan amounts from 1000 to 100000 will be accepted.")).showAndWait();
            ValidInput = false;

        }

        try{
            Double LoanYears = 0.0;
            Lloan.setNumberOfYears(Integer.parseInt(NumberOfYears.getText()));
            if(LoanYears < 1 || LoanYears > 20)
            {
                throw new Exception();

            }
        }
        catch(Exception f)
        {
            new Alert(Alert.AlertType.ERROR,("Invalid Input: The number of years must be from 1 to 20.")).showAndWait();
            ValidInput = false;

        }
        if (ValidInput = true)
        {
            //Adding column names to table.
            ResultsTable.setText("Interest Rate                    Monthly Payment                    "
                + "Total Payment ");
            //Do While loop for calculating/printing values until the interest rate reaches 8%
            do
            {

                ResultsTable.appendText(new DecimalFormat("0.000%").format(Lloan.getAnnualInterestRate()/100.0) + "                                    " +
                    new DecimalFormat("$###,##0.00").format(Lloan.getMonthlyPayment()) + "                            " +
                    new DecimalFormat("$###,##0.00").format(Lloan.getTotalPayment()) + " ");
                Lloan.setAnnualInterestRate(Lloan.getAnnualInterestRate() + 0.125);

            } while (Lloan.getAnnualInterestRate() <= 8);
        }
     

    }
}

public class Loan {
private double annualInterestRate;
private int numberOfYears;
private double loanAmount;
private java.util.Date loanDate;

/** Default constructor */
public Loan() {
    this(2.5, 1, 1000);
}

/** Construct a loan with specified annual interest rate,
      number of years, and loan amount
    */
public Loan(double annualInterestRate, int numberOfYears,
      double loanAmount) {
    this.annualInterestRate = annualInterestRate;
    this.numberOfYears = numberOfYears;
    this.loanAmount = loanAmount;
    loanDate = new java.util.Date();
}

/** Return annualInterestRate */
public double getAnnualInterestRate() {
    return annualInterestRate;
}

/** Set a new annualInterestRate */
public void setAnnualInterestRate(double annualInterestRate) {
    this.annualInterestRate = annualInterestRate;
}

/** Return numberOfYears */
public int getNumberOfYears() {
    return numberOfYears;
}

/** Set a new numberOfYears */
public void setNumberOfYears(int numberOfYears) {
    this.numberOfYears = numberOfYears;
}

/** Return loanAmount */
public double getLoanAmount() {
    return loanAmount;
}

/** Set a newloanAmount */
public void setLoanAmount(double loanAmount) {
    this.loanAmount = loanAmount;
}

/** Find monthly payment */
public double getMonthlyPayment() {
    double monthlyInterestRate = annualInterestRate / 1200;
    double monthlyPayment = loanAmount * monthlyInterestRate / (1 -
      (1 / Math.pow(1 + monthlyInterestRate, numberOfYears * 12)));
    return monthlyPayment;  
}

/** Find total payment */
public double getTotalPayment() {
    double totalPayment = getMonthlyPayment() * numberOfYears * 12;
    return totalPayment;  
}

/** Return loan date */
public java.util.Date getLoanDate() {
    return loanDate;
}
}

Explanation / Answer

import java.util.Scanner; import java.lang.Math; import java.text.DecimalFormat; public class Logs { //integer x field & encapsulation private static double x; // x encapsulation public double getX(){ return x; } public void setX (double ex){ if (ex >= 0){ x = ex; } else{ System.out.println("You may not choose a negative number, 'x' = 0"); } } //integer y field private static double y; // y encapsulation public double getY(){ return y; } public void setY (double why){ if (why >= 0){ y = why; } else{ System.out.println("You may not choose a negative number, 'y' = 0"); } } //tester public static void main (String [] args){ Logs sample =new Logs(); Scanner var = new Scanner(System.in); DecimalFormat fmt = new DecimalFormat ("0.###"); sample.setX (var.nextDouble()); sample.setY (var.nextDouble()); x = sample.getX(); y = sample.getY(); double z = (x*y); double logX = Math.log(y); double logY = Math.log(x); double logZ = (logX +logY); double result = (Math.exp(logZ)); if (z != result){ System.out.printf("%s", "Incorrect answer: be a better coder"); } else { System.out.printf("%s %.3d %s %.3d %s %.3d", "The product of the values you chose is: ", + z, " ln(x) + ln(y) is: ", + logZ, " Compute to e: ", + result); } } }

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote