我正在为我的班级开发一个网络应用程序。基本上,我必须编写java和jsp来创建一个站点,提供下面的.jsp输出(前面是一个.jsp页面,要求提供余额、比率和句号)。我现在正在为它编写java,并试图使用Java类创建一个html表。
我遇到的问题是使表显示比率(行)和周期(列)的标准偏差2。而不是仅仅添加所有期间和费率的所有信息。我怎么缩小范围?
注意:我知道我的表中的代码是完全不正确的,我认为其他的一切都很好。
到目前为止,我的守则:
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;
}
}发布于 2010-10-14 05:08:03
开始时需要在for循环中增加rate,然后需要迭代每个可能的term,并将term和rate传递给getNewBalance()函数。
编辑:代码
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);
}
}输出:

https://stackoverflow.com/questions/3930131
复制相似问题