2017-03-05 36 views
-4

有人可以幫我糾正我的代碼嗎?它是爲計算住房貸款(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),並相應地編輯您的問題。 (即使這不是家庭作業,請考慮建議。) –

回答

0

你要設置的值到var1,但calc看其內部var領域,這是一個不同的對象。你可以用calc.var.set...代替var1.set...

或者你可以在你的VariablesEMIcalc類合併成一個。

-1

你在找這個?

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

正如我所說,我們是一個問答網站,而不是家庭作業寫作服務。 「複製,粘貼,並將其交給你的教師」(如這樣)的答案與問題本身一樣受到低估。 –