2017-03-05 4 views
-4

Kann mir bitte jemand helfen, meinen Code zu korrigieren? Es ist erstellt, um Wohnungsbaudarlehen (UMI) zu berechnen, die Codierung ist korrekt, aber es zeigt nicht die Ausgabe vollständig. Nach "Kreditdauer eingeben" wird eine Box angezeigt. Gibt es noch eine andere Möglichkeit, die Variablen in class Variables zu setzen?Überprüfen und korrigieren Sie meinen Code. (Ich bin ein Anfänger)

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

Sie sollten den Stapel Echange Code überprüfen, um dies zu tun. http://codereview.stackexchange.com/ –

+0

Code Review Richtlinien sagen, nicht im Falle von falschen Ergebnissen zu fragen. Dies könnte hier besser sein, da das Problem darin besteht, dass Op zwei verschiedene Objekte als die gleichen verwechselt. –

+0

Willkommen bei Stack Overflow! Es sieht so aus, als ob du nach Hausaufgabenhilfe fragst. Obwohl wir damit keine Probleme haben, beachten Sie bitte diese [dos and don'ts] (http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions)/338845 # 338845) und bearbeiten Sie Ihre Frage entsprechend. (Auch wenn das keine Hausaufgaben sind, bitte beachten Sie den Rat trotzdem.) –

Antwort

0

Sie die Einstellung der Werte in var1, aber die calc sieht an seinem inneren var Feld, das ein anderes Objekt ist. Sie könnten einfach var1.set... durch calc.var.set... ersetzen.

Oder Sie könnten Ihre Variables und EMIcalc Klassen in eins zusammenführen.

-1

Suchst du das?

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: Versuchen Sie Ihre Aufgaben selbst.

+0

Wir sind eine Frage-und-Antwort-Seite, kein Hausaufgaben-Schreibservice. Bitte geben Sie den Nutzern keinen Grund, etwas anderes zu glauben. Vielen Dank. –

+0

@JoeC Ich finde keinen Grund, meine Antwort zu verwerfen. Könnten Sie bitte erklären? –

+0

Wie gesagt, wir sind eine Frage-und-Antwort-Site, kein Hausaufgaben-Schreibservice. Antworten auf die Art "Kopieren, Einfügen und Übergeben an Ihren Lehrer" (wie diese) sind genauso Gegenstand von Antworten wie die Frage selbst. –

Verwandte Themen