views:

77

answers:

1

Hello guys!

I'm working on a network application for my class. Basically I have to write java and jsp to make a site that gives the .jsp output below (which is preceded by a .jsp page that asks for the balance, rate, and period). I'm writing the java for it now and I'm trying to make a html table with the java class.

The problem I'm having is to make it so that the table is showing the standard deviation of 2 for the rate (rows) and period (columns). Instead of just adding all of the information for all periods and rates. How do I narrow it?

note: I know the code in my table is really not correct at all, i think everything else is ok though

My Code so far: Thanks.

    package SavingAcct;

    import java.text.*;

    public class savingsAccount {

private double rate;
private double currentBalance;
private int term;

public savingsAccount() {

    this.rate = 0.00;
    this.currentBalance = 0.00;
    this.term = 0;


}

public savingsAccount(double rate, double currentBalance, int term) {

    this.rate = rate;
    this.currentBalance = currentBalance;
    this.term = term;


}

/**
 * @return the term
 */
public int getTerm() {
    return term;
}

/**
 * @param term the term to set
 */
public void setTerm(int term) {
    this.term = term;
}

/**
 * @return the rate
 */
public double getRate() {
    return rate;
}

/**
 * @param rate the rate to set
 */
public void setRate(double rate) {
    this.rate = rate;
}

/**
 * @return the balance
 */
public double getBalance() {

    return currentBalance;
}

/**
 * @param balance the balance to set
 */
public void setBalance(double balance) {
    this.currentBalance = balance;
}

public String doSavingsAccount() {
    String htmlSavingsTable = "";


    NumberFormat cf = NumberFormat.getCurrencyInstance();
    NumberFormat pf = NumberFormat.getPercentInstance();

    //start the html table
    htmlSavingsTable = "<table border='2'>";
    //create a table heading
    htmlSavingsTable += "<tr>";
    htmlSavingsTable += "<td><b>  -  </b></td>";
    htmlSavingsTable += "<td><b>" + (term-2) + "</b></td>";
    htmlSavingsTable += "<td><b>" + (term-1) + "</b></td>";
    htmlSavingsTable += "<td><b>" + term + "</b></td>";
    htmlSavingsTable += "<td><b>" + (term+1) + "</b></td>";
    htmlSavingsTable += "<td><b>" + (term+2) + "</b></td>";
    htmlSavingsTable += "</tr>";

    for (double rate = this.getRate()-2; rate <= getRate()+2;){


        // start html table row for 
        htmlSavingsTable += "<tr>";
        // add rate to row
        htmlSavingsTable += "<td><b>" + pf.format(rate-2) + "</b></td>";
        // add monthly payment to row
        htmlSavingsTable += "<td><b>" + cf.format(getNewBalance())+     "</b></td>";
        // end the row
        htmlSavingsTable += "</tr>";


    }
    // end the table
    htmlSavingsTable += "</table>";

    return htmlSavingsTable;

}

public double getNewBalance() {
    double newBalance;
    newBalance = currentBalance * (Math.pow((1+rate), term));
    return newBalance;
}


    }
A: 

You need to increment rate in your for loop for a start, then need to iterate over each possible term, and pass term and rate to the getNewBalance() function.

Edit: code

package acme.savingacct;

import java.text.NumberFormat;

public class SavingsAccount {
    private transient double startingRate;
    private transient double currentBalance;
    private transient int startingTerm;

    public SavingsAccount(final double startingRate,
            final double currentBalance, final int startingTerm) {
        this.startingRate = startingRate;
        this.currentBalance = currentBalance;
        this.startingTerm = startingTerm;
    }

    public SavingsAccount() {
        this.startingRate = 0.0;
        this.currentBalance = 0.0;
        this.startingTerm = 0;
    }

    /**
     * @return the term
     */
    public final int getStartingTerm() {
        return startingTerm;
    }

    /**
     * @param term
     *            the term to set
     */
    public void setStartingTerm(final int term) {
        this.startingTerm = term;
    }

    /**
     * @return the rate
     */
    public final double getStartingRate() {
        return startingRate;
    }

    /**
     * @param rate
     *            the rate to set
     */
    public void setStartingRate(final double rate) {
        this.startingRate = rate;
    }

    /**
     * @return the balance
     */
    public final double getBalance() {
        return currentBalance;
    }

    /**
     * @param balance
     *            the balance to set
     */
    public void setBalance(final double balance) {
        this.currentBalance = balance;
    }

    @Override
    public String toString() {
        final StringBuffer htmlSavingsTable = new StringBuffer(1024);
        final NumberFormat currFmt = NumberFormat.getCurrencyInstance();
        final NumberFormat pctFmt = NumberFormat.getPercentInstance();

        // start the html table & create a table heading
        htmlSavingsTable.append("<table border='2'>\n  <tr>\n"
                + "    <th>  -  </th>\n");

        for (int term = getStartingTerm(); term < getStartingTerm() + 5; term++) {
            htmlSavingsTable.append("    <th>" + term + "</th>\n");
        }

        htmlSavingsTable.append("  </tr>\n");

        for (double rate = getStartingRate(); rate < getStartingRate() + 5.0; rate++) {
            // start html table row for rate & add rate to row
            htmlSavingsTable.append("  <tr>\n    <th>"
                    + pctFmt.format(rate / 100.0) + "</th>\n");

            // add monthly payment to row
            for (int term = getStartingTerm(); term < getStartingTerm() + 5; term++) {
                htmlSavingsTable
                        .append("    <td>"
                                + currFmt.format(getNewBalance(rate, term))
                                + "</td>\n");
            }

            // end the row
            htmlSavingsTable.append("  </tr>\n");
        }

        // end the table
        htmlSavingsTable.append("</table>");

        return htmlSavingsTable.toString();
    }

    /**
     * @param aRate
     *            the rate
     * @param aTerm
     *            the term
     * @return the calculated balance
     */
    public double getNewBalance(final double aRate, final int aTerm) {
        double newBalance;
        newBalance = currentBalance * (Math.pow((1 + aRate / 100.0), aTerm));
        return newBalance;
    }

    /**
     * For testing purpose ..
     * 
     * @param args
     */
    public static void main(final String[] args) {
        final SavingsAccount sacc = new SavingsAccount(5.0, 1000.0, 12);
        System.out.println(sacc);
    }

}

Output:

alt text

RC
thanks that helped alot, although I'm still having trouble getting my .jsp to actually print the table
Frogger