我正在尝试编写一个程序,允许用户创建“贷款”对象并在通过利息等式后测量他们必须支付的总金额。我有两个问题,我已经处理了几个小时,但由于某种原因无法解决。最大的问题是,应该在插入变量后计算贷款总支付额的类,但它总是返回零,我不知道为什么。是语法问题吗?我创建了一个测试贷款类来测试程序,该程序创建了十个具有十个随机时间长度的随机贷款,并且“总计支付”和“每月支付”(依赖于总计支付)始终为零。
第二个问题是,我试图根据贷款的年数对十个随机贷款进行排序,但我无法让它起作用!我尝试了几种排序方法,我包含的是最近的,可能是最愚蠢的哈哈哈,但它是我最近玩的那个。我已经包含了下面所有的代码,有什么想法吗?
贷款类别:(有点长,但重要的是主要贷款类别、总付款和月付款)
public class Loan {
double annualInterestRate = 2.5;
int numberOfYears = 1;
double loanAmount = 1000;
double base;
double exponent;
double totalPay;
String summary;
double monthly;
String[] list = new String[10];
String s;
/**
* creates default loan with 2.5 annual interest rate 1 year and 1000$
*/
public Loan(){
}
/**
* totalPay = amount(1+rate/12)^(year*12)
*
* @param anualInterestRate
* @param numberOfYears
* @param loanAmount
*/
public Loan(double anualInterestRate, int numberOfYears, double loanAmount){
base = (double) ( loanAmount * (1+anualInterestRate/12));
exponent = (double) (numberOfYears * 12);
totalPay = (double) Math.pow(base, exponent);
}
/**
*
* @return total payment
*/
public double totalPayment(){
return this.totalPay;
}
/**
*
* @return Monthly Payment
*/
public double monthlyPayment(){
monthly = (totalPay/12);
return monthly;
}
}
测试贷款:
import java.util.Random;
public class TestLoan {
public static void main (String[] args){
Random r = new Random();
Loan[] list = new Loan[10];
for (int i = 0; i < 10; i++){
Loan x = new Loan();
list[i] = x;
System.out.println(list[i].toString());
}
System.out.println();
System.out.println();
for (int i = 0; i < 9; i++){
list[i].setNumberOfYears(r.nextInt(30));
if (list[i].getNumberOfYears() > list[i+1].getNumberOfYears())
list[i] = list[i+1];
System.out.println(list[i].toString());
}
}
}
谢谢你的寻找!
编辑删除了不相关的代码
您设置了年数,但从未计算基数、指数或总薪酬。这只会发生在从不调用的构造函数中。
您需要做的是将函数代码移出构造函数并进入数据口径。该构造函数应该用于构造对象。
旧构造函数:
public Loan(double anualInterestRate, int numberOfYears, double loanAmount) {
base = (double) (loanAmount * (1 + anualInterestRate / 12));
exponent = (double) (numberOfYears * 12);
totalPay = (double) Math.pow(base, exponent);
}
更好的方式:
public Loan(double annualInterestRate, int numberOfYears, double loanAmount) {
this.annualInterestRate = annualInterestRate;
this.numberOfYears = numberOfYears;
this.loanAmount = loanAmount;
}
public void calculatePay() {
base = (double) (loanAmount * (1 + annualInterestRate / 12));
exponent = (double) (numberOfYears * 12);
totalPay = (double) Math.pow(base, exponent);
}
此外,您的排序方法也有缺陷。您应该确定贷款的自然顺序是什么,然后实现可比较的界面。
然后可以使用现有的排序库,如下所示:
for (int i = 0; i < 9; i++) {
list[i].setNumberOfYears(r.nextInt(30));
list[i].calculatePay();
}
Arrays.sort(list);
for (Loan loan: list) {
System.out.println(loan);
}
我有个问题。我编写了一个简单的抽象类,尝试对该类的数组列表进行排序,并为compareTo函数but list实现了Comparator接口。sort给出了一个错误。请帮忙。下面是一个代码: 在主要课程中,我有: 这给我一个错误,不会排序列表。什么是问题?我应该在扩展类中扩展或实现一些东西吗?当然,我有2类扩展抽象天线类。
我显示了这个错误,但我不知道为什么: [15:52:26]TypeError:TypeError:undefined不是对象(计算“props.navigationstate.index”)
问题内容: 我有一组建立形状的X和Y点,我需要知道对象是否在其中,该对象的计算是什么? X和Y坐标示例: 我对数学不是很满意:(因此,我希望得到一些支持来理解它的完成方式。 我到目前为止的例子,但似乎并不十分可靠: 问题答案: 您可以从这里开始:http : //en.wikipedia.org/wiki/Point_in_polygon 您可能还会研究JTS拓扑套件。特别是使用此功能。 编辑 :
问题内容: 我有以下JSON数组,我想创建对象表单状态键计数 要计算状态键值并创建以下对象 问题答案: 使用 方法 虽然可以使用 具有相同代码的方法。
我和朋友在讨论是否可以在不排序数组的情况下,使用分治算法计算数组a[1…n]中出现的某个元素k的数量? 我们遇到了一个障碍,如果我们使用二进制搜索,一旦找到元素,它就会停止。有什么想法吗?