Best Practice Wieso funktioniert der Modulo - Operator nicht?

popelheinixd

Aktives Mitglied
Ich habe folgendes programmiert:

Java:
/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 29.01.2018
  * @author
  */

public class Berechnungen {
 
  // Anfang Attribute
  // Ende Attribute
 
  public Berechnungen() {
  }

  // Anfang Methoden
  public double bestimmeZinssatz(double kreditbetrag, int laufzeit) {
    double zinssatz = 0.0;
    double realzins = 0.0;
    if (laufzeit >= 16)
    {
      zinssatz = 2.5;
    } else
    {
      if (laufzeit > 10)
      {
        zinssatz = 2.0; 
      } else
      {
        if (laufzeit > 5)
        {
          zinssatz = 1.5;
        } else
        {
          zinssatz = 1.0;
        } // end of if-else
      } // end of if-else
    } // end of if-else
    if (kreditbetrag < 80000) {
      realzins = zinssatz + 0.2; 
    } else {
      realzins = zinssatz; 
    } // end of if-else
    return realzins;
  }
   
  public String fuellenAusgabefeld(double kreditbetrag, double annuitaet, int laufzeit, boolean sonderzahlung) {
    //lokale Variablen
    double anfangsschuld = kreditbetrag;
    String ausgabefeld = "";
    String ausgabe = "";
    int dauer = laufzeit * 12;
    double sondertilgung = 0.0;
    double endschuld = 0.0;
    double betrag = annuitaet;
    //Berechnungen
   
    for (int i = 1;i <= dauer;i++ ) {
      double zins = (anfangsschuld * (this.bestimmeZinssatz(kreditbetrag, laufzeit)/100/12));
      double zinsen = Math.round(100.0 * zins)/100.0;
      double tilgung = Math.round(100.0 * (betrag - zinsen))/100.0;     
     
     
      if (sonderzahlung == true)
      {
        if (i % 12 == 0)
        {
          sondertilgung = kreditbetrag * 0.05;
        } // end of if
      } else
      {
        sondertilgung = 0.0;
      } // end of if-else
      endschuld = anfangsschuld - tilgung - sondertilgung;
      ausgabefeld ="   Anfangsschuld: "+Math.round(100.0 * anfangsschuld)/100.0+" €   Zinsen: "+zinsen+" €   Tilgung: "+tilgung+" €   Sondertilgung: "+sondertilgung+" €   Endschuld: "+Math.round(100.0* endschuld)/100.0+" €\n";
      anfangsschuld = endschuld;
      ausgabe = ausgabe + "Monat: "+i+ ausgabefeld;
    } // end of for
    String text = ausgabe;
    return text;
  }
     
      // Ende Methoden
} // end of Berechnungen

Und das ist die GUI - Klasse:

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 29.01.2018
  * @author
  */

public class Kreditrechner extends JFrame {
  // Anfang Attribute
  private JLabel jLabel1 = new JLabel();
  private JLabel jLabel2 = new JLabel();
  private JLabel jLabel3 = new JLabel();
  private JLabel jLabel4 = new JLabel();
  private JLabel jLabel5 = new JLabel();
  private JTextField jTextField1 = new JTextField();
  private JTextField jTextField2 = new JTextField();
  private JTextField jTextField3 = new JTextField();
  private JCheckBox jCheckBox1 = new JCheckBox();
  private JTextArea jTextArea1 = new JTextArea("");
  private JScrollPane jTextArea1ScrollPane = new JScrollPane(jTextArea1);
  private JButton jButton1 = new JButton();
  // Ende Attribute
 
  public Kreditrechner(String title) {
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 1220;
    int frameHeight = 569;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten
   
    jLabel1.setBounds(495, 0, 228, 57);
    jLabel1.setText("Kreditrechner");
    jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
    jLabel1.setFont(new Font("Arial Narrow", Font.BOLD + Font.ITALIC, 24));
    cp.add(jLabel1);
    jLabel2.setBounds(8, 72, 147, 35);
    jLabel2.setText("Kreditsumme in Euro:");
    cp.add(jLabel2);
    jLabel3.setBounds(336, 72, 160, 35);
    jLabel3.setText("monatliche Zahlung in Euro:");
    cp.add(jLabel3);
    jLabel4.setBounds(672, 72, 147, 35);
    jLabel4.setText("Laufzeit in Jahren:");
    cp.add(jLabel4);
    jLabel5.setBounds(1048, 72, 150, 35);
    jLabel5.setText("jährlich 5 % Sondertilgung");
    cp.add(jLabel5);
    jTextField1.setBounds(152, 72, 147, 35);
    cp.add(jTextField1);
    jTextField2.setBounds(496, 72, 147, 35);
    cp.add(jTextField2);
    jTextField3.setBounds(824, 72, 147, 35);
    cp.add(jTextField3);
    jCheckBox1.setBounds(1016, 72, 20, 35);
    jCheckBox1.setText("");
    jCheckBox1.setOpaque(false);
    cp.add(jCheckBox1);
    jTextArea1ScrollPane.setBounds(16, 120, 945, 401);
    cp.add(jTextArea1ScrollPane);
    jButton1.setBounds(1016, 120, 185, 41);
    jButton1.setText("Berechnung durchführen");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton1_ActionPerformed(evt);
      }
    });
    cp.add(jButton1);
    // Ende Komponenten
   
    setVisible(true);
  } // end of public Kreditrechner
 
  // Anfang Methoden
 
  public static void main(String[] args) {
    new Kreditrechner("Kreditrechner");
  } // end of main
 
  public void jButton1_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
    // Auslesen und Deklaration
    double kreditbetrag = Double.parseDouble(this.jTextField1.getText());
    double annuitaet = Double.parseDouble(this.jTextField2.getText());
    int laufzeit = Integer.parseInt(this.jTextField3.getText());
    // lokale Variablen
    boolean sonderzahlung;
    String ausgabe;
    // Checkbox
    if (this.jCheckBox1.isSelected()) {
      sonderzahlung = true;
    } else {
      sonderzahlung = false;
    } // end of if-else
    // Klassenaufruf
    Berechnungen x = new Berechnungen();
    ausgabe = x.fuellenAusgabefeld(kreditbetrag, annuitaet, laufzeit, sonderzahlung);
    // end of jButton1_ActionPerformed
    this.jTextArea1.setText(ausgabe);
    // Ende Methoden
  }
} // end of class Kreditrechner

Das Problem ist, dass die Sondertilgung ab dem 13. Monat, immer abgezogen wird, sie soll aber nur in den Monaten die durch 12 teilbar sind (12. Monat, 24. Monat usw.) abgezogen werden. Wie programmiere ich den Modulo so?

Eingabedaten:
Kreditsumme: 100000
monatliche Zahlung: 1000
Laufzeit in Jahren: 2
jährlich 5 % Sondertilgung: ja
 

ssoul26

Bekanntes Mitglied
Dein Problem liegt darin, dass du die Variable sondertilgung ab dem 12 Monat immer gefüllt lässt! Diese Variable dürfte nur dann gefüllt sein, wenn deine Bedingung zutrifft! Ich habe deine Klasse angepasst und die If-Kondition in der Methode fuellenAusgabefeld.. etwas abgeändert.

Probier mal hier:

Java:
   public String fuellenAusgabefeld(double kreditbetrag, double annuitaet, int laufzeit, boolean sonderzahlung) {
      // lokale Variablen
      double anfangsschuld = kreditbetrag;
      String ausgabefeld = "";
      String ausgabe = "";
      int dauer = laufzeit * 12;
      double sondertilgung = 0.0;
      double endschuld = 0.0;
      double betrag = annuitaet;
      // Berechnungen
      for (int i = 1; i <= dauer; i++) {
         double zins = (anfangsschuld * (this.bestimmeZinssatz(kreditbetrag, laufzeit) / 100 / 12));
         double zinsen = Math.round(100.0 * zins) / 100.0;
         double tilgung = Math.round(100.0 * (betrag - zinsen)) / 100.0;
         if (sonderzahlung == true) {
            if (i % 12 == 0) {
               sondertilgung = kreditbetrag * 0.05;
            } else {
               sondertilgung = 0.0;
            }
         } // end of if-else
         endschuld = anfangsschuld - tilgung - sondertilgung;
         ausgabefeld = "   Anfangsschuld: " + Math.round(100.0 * anfangsschuld) / 100.0 + " €   Zinsen: " + zinsen + " €   Tilgung: "
            + tilgung + " €   Sondertilgung: " + sondertilgung + " €   Endschuld: " + Math.round(100.0 * endschuld) / 100.0 + " €\n";
         anfangsschuld = endschuld;
         ausgabe = ausgabe + "Monat: " + i + ausgabefeld;
      } // end of for
      String text = ausgabe;
      return text;
   }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Wieso funktioniert das nich? Allgemeine Java-Themen 5
C Wieso funktioniert das? Allgemeine Java-Themen 6
W Wieso funktioniert dieser Code hier? Allgemeine Java-Themen 6
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
P Wieso benutzen PriorityQueues Heaps? Allgemeine Java-Themen 2
Y Wieso krieg ich die Unit Tests nicht hin Allgemeine Java-Themen 55
F Input/Output NullPointerException, aber wieso? [Apache POI] Allgemeine Java-Themen 11
R MAC-Adresse eindeutig für einen PC ? Bezug zu Netzwerk, wieso ? Allgemeine Java-Themen 7
J Jasper ireport - wieso beendet die Anwendung wenn ich die Preview schließe Allgemeine Java-Themen 1
I Interface Interface / Klasse - wieso Abstract? Allgemeine Java-Themen 13
A Methoden Generische Methode mit Arrays - Source Compatibility 1.7 benötigt, wieso? Allgemeine Java-Themen 3
S RemoteException wieso ? Allgemeine Java-Themen 6
J if else Anweisung macht nicht was es soll. Wieso? Allgemeine Java-Themen 10
P wieso kann ich auf bluej exportieren aber auf eclipse nicht? Allgemeine Java-Themen 2
DEvent Wieso ist Javadoc mit Html Tags? Allgemeine Java-Themen 47
D java.util.InputMismatchException im Scanner -wieso? Allgemeine Java-Themen 5
E Wieso returnt das hier 1? Allgemeine Java-Themen 3
DStrohma [Erledigt] Wieso kann ich Taste 'ENTER' in JTable nicht belegen? Allgemeine Java-Themen 2
S Wieso stehen in der API immer wieder abstrakte Methoden ? Allgemeine Java-Themen 7
lacyuu Schleife hängt sich auf, wieso?? Allgemeine Java-Themen 2
V Wieso meckert FindBugs da? Allgemeine Java-Themen 7
P Wieso HashMap-Zugriff mit Object, statt mit MyObject? Allgemeine Java-Themen 12
V Wieso Heap Space Problem? Allgemeine Java-Themen 14
J Wieso implementiert HTTPServlet Serializable? Allgemeine Java-Themen 2
P Wieso skalieren diese beiden Threads unterschiedlich gut? Allgemeine Java-Themen 16
zilti Wieso geht der StreamReader/Writer nicht? Allgemeine Java-Themen 5
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
G wieso wird der String des StringBuilder immer länger? Allgemeine Java-Themen 2
G wieso "implements" Allgemeine Java-Themen 13
S Problem mit generics -> ClassCastException und ka wieso Allgemeine Java-Themen 20
G Übergabe funzt nicht, aber wieso? Allgemeine Java-Themen 3
G NullPointer ? wieso? Allgemeine Java-Themen 7
I Wieso läuft Programm bei Kollegen aber nicht bei mir? Allgemeine Java-Themen 10
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
W While Schleife funktioniert nicht ganz Allgemeine Java-Themen 4
H do-while Schleife funktioniert nicht wie ich es möchte Allgemeine Java-Themen 7
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
stormyark TikTakToe funktioniert nicht Allgemeine Java-Themen 10
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
N Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 6
Lukas2904 Wie funktioniert ein KeyLogger? Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
1Raini Java if-Abfrage funktioniert nicht! Allgemeine Java-Themen 3
Killunox MaxHeap Zuweisung unter Linux funktioniert nicht Allgemeine Java-Themen 1
Dann07 MP3 Datei abspielen funktioniert nicht Allgemeine Java-Themen 6
O Aus JAR-Datei erstellte EXE-Datei funktioniert nicht Allgemeine Java-Themen 10
A Mp3 Player funktioniert nicht Allgemeine Java-Themen 0
X JNA funktioniert nicht mehr Allgemeine Java-Themen 4
bueseb84 FolderWatcher mit WatchService funktioniert nur bedingt Allgemeine Java-Themen 5
Drachenbauer Division mit Int funktioniert nicht Allgemeine Java-Themen 3
O docx-Datei erzeugung mit DocXStamper funktioniert nicht Allgemeine Java-Themen 2
F Schleife funktioniert nicht richtig Allgemeine Java-Themen 13
T Split() Methode funktioniert nicht?! Allgemeine Java-Themen 11
L Tesseract-OCR 4.0 unter Linux funktioniert nicht Allgemeine Java-Themen 3
J Wie konkret funktioniert das Modulsystem unter Java 11? Allgemeine Java-Themen 4
J Neuronales Netz funktioniert mal und mal nicht. Allgemeine Java-Themen 3
T Umlaute in Eclipse einlesen funktioniert nicht Allgemeine Java-Themen 16
A Methodenaufruf funktioniert nicht richtig Allgemeine Java-Themen 5
C WindowBuilder Design funktioniert nicht Allgemeine Java-Themen 0
J FTPSClient funktioniert nicht Allgemeine Java-Themen 4
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
M Operatoren Warum funktioniert diese überprüfung nicht? Allgemeine Java-Themen 7
R jar-Datei funktioniert nicht Allgemeine Java-Themen 2
E Open Declaration Funktioniert nicht Allgemeine Java-Themen 0
R Verschlüsselung funktioniert nicht Allgemeine Java-Themen 5
RalleYTN requires transitive funktioniert nicht? Allgemeine Java-Themen 7
R Bruteforce hashes mit multithreading. Funktioniert das so? Allgemeine Java-Themen 0
HarleyDavidson Eigener PropertyChangeListener funktioniert einfach nicht Allgemeine Java-Themen 3
J Exclude funktioniert nicht Allgemeine Java-Themen 2
K .jar funktioniert nicht vollständig Allgemeine Java-Themen 1
P Java https proxy (-Dhttps.proxyHost) Start-Parameter funktioniert nicht? Allgemeine Java-Themen 2
L Auswertung eines Testes funktioniert nicht Allgemeine Java-Themen 37
O Fahrenheit/Celsius Converter funktioniert nicht Allgemeine Java-Themen 2
M Serialisierung funktioniert nicht Allgemeine Java-Themen 9
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
J Arrays auf gleichheit untersuchen funktioniert nicht Allgemeine Java-Themen 11
P GUI: ArrayList anzeigen funktioniert nicht Allgemeine Java-Themen 5
H Timer funktioniert nicht? Allgemeine Java-Themen 3
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
R Erste Schritte Object reference funktioniert nicht. Wie mach ichs richtig? Allgemeine Java-Themen 3
J If Abfrage funktioniert nicht Allgemeine Java-Themen 4
R Objekt funktioniert nicht auf iOS Allgemeine Java-Themen 15
U PersistenceManager.createEntityManager funktioniert nicht Allgemeine Java-Themen 3
D Java Datei nach Eclipse Export funktioniert nicht Allgemeine Java-Themen 0
M Eigene forEach()-Methode funktioniert nicht. Allgemeine Java-Themen 2
H File.listFiles() funktioniert nicht... Allgemeine Java-Themen 10
JG12111989 Auswertung von Fragebogen funktioniert nicht! Allgemeine Java-Themen 7
M Primzahlberechnung funktioniert nicht. Allgemeine Java-Themen 4
A JFreeChart funktioniert nicht :( Allgemeine Java-Themen 6
C file.delete() funktioniert bei zweiten aufruf nicht mehr Allgemeine Java-Themen 3
F Datei einlesen funktioniert nicht Allgemeine Java-Themen 3
A Debugger im Java-Editor funktioniert nicht Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben