ZULETZT ANGESEHEN
Die Aufgabe der heutigen Stunde ist die Maklerfirma! Herr Rich benötigt eine Konsolenanwendung für seine Maklerfirma, um die Kosten und den zukünftigen Wert von Grundstücken zu berechnen. Das Programm folgt dem EVA-Prinzip (Eingabe, Verarbeitung, Ausgabe) und wurde optimiert, um Fehler zu beseitigen.
Das Programm berechnet den Grundstückspreis basierend auf Breite, Länge und Quadratmeterpreis, hinzu kommen Maklergebühr und Mehrwertsteuer. Es ermittelt den zukünftigen Wert des Grundstücks nach einer Haltezeit (mit 2% jährlicher Wertsteigerung) und den Break-Even-Point, an dem der zukünftige Wert die Gesamtkosten übersteigt. Alle Eingaben sind Dezimalzahlen, und die Ausgaben sind formatiert.
Lösungsprozess der Aufgabe:
/**
*
* Das fertige Java Programm der Maklerfirma
*
* @version 1.0 vom 28.04.2025
* @MeinInfoKurs.github.io
*/
public class MarklerFirma {
public static void main(String[] args) {
double GrundstuecksPreis, Marklergebuehr, GesamtKosten, Breite, Laenge, QuadratMeterPreis;
double Gebuehr, Mehrwertsteuer, Gewinnkalkulation, Jahressteigerung, Gewinn, mehrwertsteuerBetrag, futureValue;
int jahre = 0;
Jahressteigerung = 0.02; // 2% jährliche Wertsteigerung
System.out.println("");
System.out.println("Maklerfirma von Herrn Rich Immobilienkalkulator:");
System.out.println("");
System.out.println("Erlaubt sind nur Dezimalzahlen in der Punkteschreibweise.");
System.out.println("");
Breite = InOut.readDouble("Welche Breite hat das Grundstueck in Meter? ");
Laenge = InOut.readDouble("Welche Laenge hat das Grundstueck in Meter? ");
QuadratMeterPreis = InOut.readDouble("Wie hoch ist der Quadratmeterpreis in Euro? ");
Gebuehr = InOut.readDouble("Wieviel betraegt die Maklergebuehr in Prozent? ");
Mehrwertsteuer = InOut.readDouble("Wie hoch ist die Mehrwertsteuer in Prozent? ");
Gewinnkalkulation = InOut.readDouble("Wie lange moechten Sie Ihr Grundstueck behalten (in Jahren)? ");
// Berechnungen
GrundstuecksPreis = Breite * Laenge * QuadratMeterPreis;
Marklergebuehr = (Gebuehr / 100) * GrundstuecksPreis;
mehrwertsteuerBetrag = (Mehrwertsteuer / 100) * GrundstuecksPreis;
GesamtKosten = GrundstuecksPreis + Marklergebuehr + mehrwertsteuerBetrag;
// Zukünftiger Wert mit Zinseszins
Gewinn = GrundstuecksPreis * Math.pow(1 + Jahressteigerung, Gewinnkalkulation);
// Berechnung des Break-Even-Points
futureValue = GrundstuecksPreis;
while (futureValue < GesamtKosten && jahre < 100) {
futureValue *= (1 + Jahressteigerung);
jahre++;
}
System.out.println("");
System.out.println("------------Grundstueckspreis------------");
System.out.println("Der Grundstueckspreis betraegt: " + InOut.format2(GrundstuecksPreis) + " Euro");
System.out.println("Rechnung Grundstueckspreis: " + InOut.format2(GrundstuecksPreis) + " = " + Laenge + " (Laenge) * " + Breite + " (Breite) * " + QuadratMeterPreis + " (Quadratmeterpreis)");
System.out.println("------------Steuer und Gebuehr------------");
System.out.println("Die Maklergebuehr betraegt: " + InOut.format2(Marklergebuehr) + " Euro");
System.out.println("Die Mehrwertsteuer betraegt: " + InOut.format2(mehrwertsteuerBetrag) + " Euro");
System.out.println("------------Zukuenftiger Wert------------");
System.out.println("In " + Gewinnkalkulation + " Jahren ist der Wert des Grundstuecks: " + InOut.format2(Gewinn) + " Euro");
System.out.println("Rechnung Zukuenftiger Wert: " + InOut.format2(GrundstuecksPreis) + " * (1 + " + Jahressteigerung + ")^" + Gewinnkalkulation + " = " + InOut.format2(Gewinn) + " Euro");
System.out.println("------------Break-Even-Point------------");
if (jahre < 100) {
System.out.println("Um den Break-Even-Point zu erreichen, benoetigen Sie " + jahre + " Jahre.");
} else {
System.out.println("Der Break-Even-Point wird nicht innerhalb von 100 Jahren erreicht.");
}
System.out.println("------------Gesamtbetrag------------");
System.out.println("Die Gesamtkosten betragen: " + InOut.format2(GesamtKosten) + " Euro");
System.out.println("Rechnung Gesamtbetrag: " + InOut.format2(GesamtKosten) + " = " + InOut.format2(GrundstuecksPreis) + " (Grundstueckspreis) + " + InOut.format2(mehrwertsteuerBetrag) + " (Mehrwertsteuer) + " + InOut.format2(Marklergebuehr) + " (Maklergebuehr)");
System.out.println("");
System.out.println("Vielen Dank fuer den Auftrag. Bis zum naechsten Mal!");
} // end of main
} // end of class MarklerFirma
In der Aufgabenstellung wird gefordert, dass wir folgende Funktionen in unseren Code implementieren:
- Nutzereingabe der Grundstücksdaten: Breite, Länge, Quadratmeterpreis
- Nutzereingabe der Gebühren: Maklergebühr (in %), Mehrwertsteuer (in %)
- Nutzereingabe der Haltezeit in Jahren
- Berechnung des Grundstückspreises, der Gebühren, der Gesamtkosten und des zukünftigen Werts
- Berechnung des Break-Even-Points
- Ausgabe der berechneten Werte mit detaillierten Rechnungen
Nutzereingaben der Grundstücksdaten und Gebühren
Um die Eingaben vom Nutzer zu erhalten, deklarieren wir Variablen für Breite, Länge, Quadratmeterpreis, Maklergebühr (in %), Mehrwertsteuer (in %) und Haltezeit. Da diese Werte Nachkommastellen haben können, nutzen wir den Datentyp double. Die Eingaben erfolgen über die Methode InOut.readDouble
, die den Nutzer nach den Werten fragt und diese speichert. Der Code dafür sieht so aus:
double Breite, Laenge, QuadratMeterPreis, Gebuehr, Mehrwertsteuer, Gewinnkalkulation;
System.out.println("Maklerfirma von Herrn Rich Immobilienkalkulator:");
System.out.println("Erlaubt sind nur Dezimalzahlen in der Punkteschreibweise.");
System.out.println("");
Breite = InOut.readDouble("Welche Breite hat das Grundstueck in Meter? ");
Laenge = InOut.readDouble("Welche Laenge hat das Grundstueck in Meter? ");
QuadratMeterPreis = InOut.readDouble("Wie hoch ist der Quadratmeterpreis in Euro? ");
Gebuehr = InOut.readDouble("Wieviel betraegt die Maklergebuehr in Prozent? ");
Mehrwertsteuer = InOut.readDouble("Wie hoch ist die Mehrwertsteuer in Prozent? ");
Gewinnkalkulation = InOut.readDouble("Wie lange moechten Sie Ihr Grundstueck behalten (in Jahren)? ");
Berechnung der Kosten, des zukünftigen Werts und des Break-Even-Points
Nach den Eingaben berechnen wir den Grundstückspreis (Breite × Länge × Quadratmeterpreis), die Maklergebühr und die Mehrwertsteuer (als Prozentsätze des Grundstückspreises), die Gesamtkosten (Summe der drei), den zukünftigen Wert (mit Zinseszins) und den Break-Even-Point (Jahre, bis der zukünftige Wert die Gesamtkosten übersteigt). Der ursprüngliche Code enthielt einen Fehler in der Schleife (for (int Jahre = 0; GrundstuecksPreis = Gewinn; Jahre++)
), der durch eine while
-Schleife korrigiert wurde. Hier ist ein Beispiel:
/* Beispiel: Grundstück 10m x 20m, 100 €/m², 5% Maklergebühr, 19% Mehrwertsteuer, 5 Jahre Haltezeit */
Breite = 10;
Laenge = 20;
QuadratMeterPreis = 100;
Gebuehr = 5;
Mehrwertsteuer = 19;
Gewinnkalkulation = 5;
double Jahressteigerung = 0.02; /* 2% jährliche Wertsteigerung */
GrundstuecksPreis = Breite * Laenge * QuadratMeterPreis; /* 10 * 20 * 100 = 20000 € */
Marklergebuehr = (Gebuehr / 100) * GrundstuecksPreis; /* 5% * 20000 = 1000 € */
mehrwertsteuerBetrag = (Mehrwertsteuer / 100) * GrundstuecksPreis; /* 19% * 20000 = 3800 € */
GesamtKosten = GrundstuecksPreis + Marklergebuehr + mehrwertsteuerBetrag; /* 20000 + 1000 + 3800 = 24800 € */
Gewinn = GrundstuecksPreis * Math.pow(1 + Jahressteigerung, Gewinnkalkulation); /* 20000 * (1 + 0.02)^5 ≈ 22081.60 € */
double futureValue = GrundstuecksPreis;
int jahre = 0;
while (futureValue < GesamtKosten && jahre < 100) { /* Berechnet Jahre bis Break-Even */
futureValue *= (1 + Jahressteigerung); /* futureValue = 20000 * (1 + 0.02)^jahre */
jahre++;
} /* Ergebnis: jahre ≈ 11, da 20000 * (1 + 0.02)^11 ≈ 24867.86 € > 24800 € */
if (jahre < 100) {
System.out.println("Um den Break-Even-Point zu erreichen, benoetigen Sie " + jahre + " Jahre.");
} else {
System.out.println("Der Break-Even-Point wird nicht innerhalb von 100 Jahren erreicht.");
}
Hinweis zur Korrektur: Der ursprüngliche Code enthielt einen Syntaxfehler in der Schleife (GrundstuecksPreis = Gewinn
statt eines Vergleichsoperators) und eine unrealistische Wertsteigerung (199%). Diese wurden korrigiert durch die Verwendung einer while
-Schleife für den Break-Even-Point und eine Wertsteigerung von 2%. Die Zinseszinsformel (Math.pow
) sorgt für präzise Berechnungen des zukünftigen Werts, und die Ausgaben sind klarer formatiert mit InOut.format2
.