2017-03-05 10 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

これを行うには、スタックEchangeコードレビューを検討する必要があります。 http://codereview.stackexchange.com/ –

+0

コードレビューのガイドラインでは、誤った結果が生じた場合には質問しないと言います。これは、Opが2つの異なるオブジェクトを同じものとして混同しているという問題があるため、ここではより良いかもしれません。 –

+0

ようこそスタックオーバーフロー!宿題の助けを求めているようです。それ自体に問題はありませんが、これらのことを守ってください(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845)、それに応じて質問を編集してください。 (これは宿題ではなくとも、とにかくアドバイスを検討してください) –

答えて

0

あなたはvar1に値を設定しているが、calcは別のオブジェクトであるその内部varフィールド、見て。 var1.set...calc.var.set...に置き換えることができます。

また、VariablesEMIcalcクラスを1つにマージすることもできます。

-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私は自分の答えをdownvoteする理由が見つかりません。説明していただけますか? –

+0

私が言ったように、私たちは宿題作成サービスではなく、質疑応答サイトです。 「コピー、ペースト、これをあなたのインストラクターに渡す」という答え(これはこのようなものです)は、質問自体と同じようにダウンボントの対象です。 –

関連する問題