摊销 Table
Amortization Table
此程序将为用户计算摊销 table。问题是我的作业需要使用子程序。我完全忘记了这一点,关于如何修改它以包含子程序有什么想法吗?
public class Summ {
public static void main(String args[]){
double loanamount, monthlypay, annualinterest, monthlyinterest, loanlength; //initialize variables
Scanner stdin = new Scanner (System.in); //create scanner
System.out.println("Please enter your loan amount.");
loanamount = stdin.nextDouble(); // Stores the total loan amount to be payed off
System.out.println("Please enter your monthly payments towards the loan.");
monthlypay = stdin.nextDouble(); //Stores the amount the user pays towards the loan each month
System.out.println("Please enter your annual interest.");
annualinterest = stdin.nextDouble(); //Stores the annual interest
System.out.println("please enter the length of the loan, in months.");
loanlength = stdin.nextDouble(); //Stores the length of the loan in months
monthlyinterest = annualinterest/1200; //Calculates the monthly interest
System.out.println("Payment Number\t\tInterest\t\tPrincipal\t\tEnding Balance"); //Creates the header
double interest, principal; //initialize variables
int i;
/* for loop prints out the interest, principal, and ending
* balance for each month. Works by calculating each,
* printing out that month, then calculating the next month,
* and so on.
*/
for (i = 1; i <= loanlength; i++) {
interest = monthlyinterest * loanamount;
principal = monthlypay - interest;
loanamount = loanamount - principal;
System.out.println(i + "\t\t" + interest
+ "\t\t" + "$" + principal + "\t\t" + "$" + loanamount);
}
}
}
我删除了我之前的评论,因为我通过阅读相关标签回答了我自己的问题:-)
例如,在 class:
中定义这样的方法
public double CalculateInterest(double loanAmount, double interestRate) {
//do the calculation here ...
}
然后在 class 代码的其他地方按名称调用该方法,例如
double amount = CalculateInterest(5500, 4.7);
any ideas on how to modify this to include subroutines?
嗯,你最好反过来做;即在编写代码之前确定需要的方法。
你做的是表单或代码重构。这是一个非正式的方法。
- 检查代码以找到执行特定任务并产生单一结果的部分。如果你能想出一个简单的名字来反映任务的作用,那就是一个好兆头。如果任务对当前 "sits" 的局部变量几乎没有依赖性,那也是一个好兆头。
- 编写一个方法声明,其中包含用于传递变量值的参数,以及 return 结果的结果类型。
- 将执行任务的现有语句复制到方法中。
- 调整新的方法主体,以便将旧上下文中对局部变量的引用替换为对相应参数的引用。
- 处理 returned 值。
- 将原始语句重写为对新方法的调用。
- 重复。
像 Eclipse 这样的 IDE 可以处理大部分重构的手动工作。
然而,真正的技巧在于决定将 "lump" 代码分成离散任务的最佳方法;也就是说,对于必须阅读/理解您的代码的人来说,有意义。那是经验带来的。 IDE 无法为您做出这些决定。
(我说过从一开始就更容易设计/实现这些方法吗?)
此程序将为用户计算摊销 table。问题是我的作业需要使用子程序。我完全忘记了这一点,关于如何修改它以包含子程序有什么想法吗?
public class Summ {
public static void main(String args[]){
double loanamount, monthlypay, annualinterest, monthlyinterest, loanlength; //initialize variables
Scanner stdin = new Scanner (System.in); //create scanner
System.out.println("Please enter your loan amount.");
loanamount = stdin.nextDouble(); // Stores the total loan amount to be payed off
System.out.println("Please enter your monthly payments towards the loan.");
monthlypay = stdin.nextDouble(); //Stores the amount the user pays towards the loan each month
System.out.println("Please enter your annual interest.");
annualinterest = stdin.nextDouble(); //Stores the annual interest
System.out.println("please enter the length of the loan, in months.");
loanlength = stdin.nextDouble(); //Stores the length of the loan in months
monthlyinterest = annualinterest/1200; //Calculates the monthly interest
System.out.println("Payment Number\t\tInterest\t\tPrincipal\t\tEnding Balance"); //Creates the header
double interest, principal; //initialize variables
int i;
/* for loop prints out the interest, principal, and ending
* balance for each month. Works by calculating each,
* printing out that month, then calculating the next month,
* and so on.
*/
for (i = 1; i <= loanlength; i++) {
interest = monthlyinterest * loanamount;
principal = monthlypay - interest;
loanamount = loanamount - principal;
System.out.println(i + "\t\t" + interest
+ "\t\t" + "$" + principal + "\t\t" + "$" + loanamount);
}
}
}
我删除了我之前的评论,因为我通过阅读相关标签回答了我自己的问题:-)
例如,在 class:
中定义这样的方法public double CalculateInterest(double loanAmount, double interestRate) {
//do the calculation here ...
}
然后在 class 代码的其他地方按名称调用该方法,例如
double amount = CalculateInterest(5500, 4.7);
any ideas on how to modify this to include subroutines?
嗯,你最好反过来做;即在编写代码之前确定需要的方法。
你做的是表单或代码重构。这是一个非正式的方法。
- 检查代码以找到执行特定任务并产生单一结果的部分。如果你能想出一个简单的名字来反映任务的作用,那就是一个好兆头。如果任务对当前 "sits" 的局部变量几乎没有依赖性,那也是一个好兆头。
- 编写一个方法声明,其中包含用于传递变量值的参数,以及 return 结果的结果类型。
- 将执行任务的现有语句复制到方法中。
- 调整新的方法主体,以便将旧上下文中对局部变量的引用替换为对相应参数的引用。
- 处理 returned 值。
- 将原始语句重写为对新方法的调用。
- 重复。
像 Eclipse 这样的 IDE 可以处理大部分重构的手动工作。
然而,真正的技巧在于决定将 "lump" 代码分成离散任务的最佳方法;也就是说,对于必须阅读/理解您的代码的人来说,有意义。那是经验带来的。 IDE 无法为您做出这些决定。
(我说过从一开始就更容易设计/实现这些方法吗?)