检查并更正我的代码。 (我是初学者)

问题描述:

有人可以帮我纠正我的代码吗?它是为计算住房贷款(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(); 
     } 
} 
+0

你应该考虑栈外汇牌价代码审查做到这一点。 http://codereview.stackexchange.com/ – 2017-03-05 12:24:41

+0

代码审查准则说,不要问,如果结果不正确。这可能会更好,因为问题是Op将两个不同的对象混淆为相同。 –

+0

欢迎来到Stack Overflow!看起来你可能会问作业帮助。虽然我们与本身没有任何问题,请遵守这些[该做什么和不该做什么(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845),并相应地编辑您的问题。 (即使这不是家庭作业,请考虑建议。) –

你要设置的值到var1,但calc看其内部var领域,这是一个不同的对象。你可以用calc.var.set...代替var1.set...

或者你可以在你的VariablesEMIcalc类合并成一个。

你在找这个?

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:尝试自己的作业。

+0

我们是一个问答网站,而不是作业写作服务。请不要让用户有理由相信。谢谢。 –

+0

@JoeC我没有找到理由来降低我的答案。你能解释一下吗? –

+0

正如我所说,我们是一个问答网站,而不是家庭作业写作服务。 “复制,粘贴,并将其交给你的教师”(如这样)的答案与问题本身一样受到低估。 –