检查并更正我的代码。 (我是初学者)
有人可以帮我纠正我的代码吗?它是为计算住房贷款(UMI)而创建的,编码是正确的,但它不会完全显示输出。 “输入贷款期限”后,显示一个框。另外还有另一种方法来设置class Variables
中的变量?检查并更正我的代码。 (我是初学者)
package assignment.pkg2;
import java.util.Scanner;//for Scanner
import java.text.DecimalFormat;//for using decimal format
class Variables{ //set the variables
private double p, r, n;
public void setVarP (double amount){
this.p = amount;
}
public void setVarR (double rate){
this.r = rate;
}
public void setVarN (int duration){
this.n = duration;
}
public double getVarP(){
return p;
}
public double getVarR(){
return r;
}
public double getVarN(){
return n;
}
}
class EMIcalc{ //the calculating part
private double monthlyPay, pow;
Variables var = new Variables();
Scanner scanner = new Scanner(System.in);
public void getPay(){
pow = Math.pow (1+(var.getVarR()/12), - var.getVarN());
monthlyPay = var.getVarP() * ((var.getVarR()/12)/(1 - pow));
DecimalFormat Dformat = new DecimalFormat("##.##");
System.out.println(Dformat.format(monthlyPay));
}
}
public class Assignment2 {
public static void main(String[] args) {
Variables var1 = new Variables();
EMIcalc calc = new EMIcalc();
Scanner scanner = new Scanner(System.in);
System.out.println("Enter your loan amount");
var1.setVarP(scanner.nextDouble());
System.out.println("Enter interest rate");
var1.setVarR(scanner.nextDouble());
System.out.println("Enter loan duration");
var1.setVarN(scanner.nextInt());
calc.getPay();
}
}
你要设置的值到var1
,但calc
看其内部var
领域,这是一个不同的对象。你可以用calc.var.set...
代替var1.set...
。
或者你可以在你的Variables
和EMIcalc
类合并成一个。
你在找这个?
import java.text.DecimalFormat;
import java.util.Scanner;
class Variables { //set the variables
private double p, r, n;
public double getVarP() {
return p;
}
public void setVarP(double amount) {
this.p = amount;
}
public double getVarR() {
return r;
}
public void setVarR(double rate) {
this.r = rate;
}
public double getVarN() {
return n;
}
public void setVarN(int duration) {
this.n = duration;
}
}
class EMIcalc { //the calculating part
Variables var = new Variables();
Scanner scanner = new Scanner(System.in);
private double monthlyPay, pow;
public void getPay() {
pow = Math.pow(1 + (var.getVarR()/12), -var.getVarN());
monthlyPay = var.getVarP() * ((var.getVarR()/12)/(1 - pow));
DecimalFormat Dformat = new DecimalFormat("##.##");
System.out.println(Dformat.format(monthlyPay));
}
}
public class Assignment2 {
public static void main(String[] args) {
EMIcalc calc = new EMIcalc();
Scanner scanner = new Scanner(System.in);
System.out.println("Enter your loan amount");
calc.var.setVarP(scanner.nextDouble());
System.out.println("Enter interest rate");
calc.var.setVarR(scanner.nextDouble());
System.out.println("Enter loan duration");
calc.var.setVarN(scanner.nextInt());
calc.getPay();
}
}
PS:尝试自己的作业。
我们是一个问答网站,而不是作业写作服务。请不要让用户有理由相信。谢谢。 –
@JoeC我没有找到理由来降低我的答案。你能解释一下吗? –
正如我所说,我们是一个问答网站,而不是家庭作业写作服务。 “复制,粘贴,并将其交给你的教师”(如这样)的答案与问题本身一样受到低估。 –
你应该考虑栈外汇牌价代码审查做到这一点。 http://codereview.stackexchange.com/ – 2017-03-05 12:24:41
代码审查准则说,不要问,如果结果不正确。这可能会更好,因为问题是Op将两个不同的对象混淆为相同。 –
欢迎来到Stack Overflow!看起来你可能会问作业帮助。虽然我们与本身没有任何问题,请遵守这些[该做什么和不该做什么(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845),并相应地编辑您的问题。 (即使这不是家庭作业,请考虑建议。) –