Hallo liebes Forum,
ich bin (so gut wie) absoluter Neuling auf dem Gebiet Java und möchte nun ein Programm schreiben, das mir die Einkommensteuer berechnet. Das hat im Großen und Ganzen auch schon ganz gut geklappt, jedoch gibt es noch ein paar Kleinigkeiten, die ich noch nicht gelöst bekommen habe.
Und zwar:
1. Unterläuft mir beim Splitting-Verfahren irgendwo ein Rundungsfehler, d.h. ich komme bei einem Einkommen von 55.555,55€ nicht auf 10.010, sondern auf 10.012€. Ich habe schon ein paar Möglichkeiten durchprobiert, leider ohne Erfolg
2. Wollte ich mal wissen, ob es evtl. möglich ist, den Programmcode noch irgendwie mehr zusammenzufassen bzw. etwas anders zu schreiben (z.B., ob es für das Splitting-Verfahren wirklich notwendig ist, den kompletten Programmcode vom ersten Verfahren zu "kopieren" und dann zu modifizieren).
Die Aufgabe lautet:
§ 32 a EStG Einkommensteuertarif
(1) Die tarifliche Einkommensteuer bemisst sich nach dem zu versteuernden Einkommen.
Sie beträgt jeweils in Euro für zu versteuernde Einkommen
1. bis 7834 € (Grundfreibetrag): 0
2. von 7835 € bis 13139 €: (939,68y + 1400)y
3. von 13140 € bis 52551 €: (228,74z + 2397)z + 1007
4. von 52552 € bis 250400 €: 0,42x − 8064
5. von 250401 € an: 0,45x − 15576
y ist ein Zehntausendstel des 7834 € übersteigenden Teils des auf einen vollen
Euro-Betrag abgerundeten zu versteuernden Einkommens. z ist ein Zehntausendstel
des 13139 € übersteigenden Teils des auf einen vollen Euro-Betrag abgerundeten
zu versteuernden Einkommens. x ist das auf einen vollen Euro-Betrag abgerundete
zu versteuernde Einkommen. Der sich ergebende Steuerbetrag ist auf
den nächsten vollen Euro-Betrag abzurunden.
(5) Bei Ehegatten, die zusammen zur Einkommensteuer veranlagt werden, beträgt
die tarifliche Einkommensteuer das Zweifache des Steuerbetrags, der sich
für die Hälfte ihres gemeinsam zu versteuernden Einkommens nach Absatz 1 ergibt
(Splitting-Verfahren).
Ihre Aufgabe ist es ein Programm zu schreiben, das auf der Kommandozeile als Parameter
ein zu versteuerndes Einkommen erhält und als Ergebnis die sich nach § 32 a (1) und (5)
ergebenden Steuerbeträge ausgibt.
Beispiel:
javac Steuer.java
java Steuer 55555.55
15269 Euro
10010 Euro (Splitting-Verfahren)
Bin für jeden Tip sehr dankbar!
Grüße
ich bin (so gut wie) absoluter Neuling auf dem Gebiet Java und möchte nun ein Programm schreiben, das mir die Einkommensteuer berechnet. Das hat im Großen und Ganzen auch schon ganz gut geklappt, jedoch gibt es noch ein paar Kleinigkeiten, die ich noch nicht gelöst bekommen habe.
Und zwar:
1. Unterläuft mir beim Splitting-Verfahren irgendwo ein Rundungsfehler, d.h. ich komme bei einem Einkommen von 55.555,55€ nicht auf 10.010, sondern auf 10.012€. Ich habe schon ein paar Möglichkeiten durchprobiert, leider ohne Erfolg
2. Wollte ich mal wissen, ob es evtl. möglich ist, den Programmcode noch irgendwie mehr zusammenzufassen bzw. etwas anders zu schreiben (z.B., ob es für das Splitting-Verfahren wirklich notwendig ist, den kompletten Programmcode vom ersten Verfahren zu "kopieren" und dann zu modifizieren).
Die Aufgabe lautet:
§ 32 a EStG Einkommensteuertarif
(1) Die tarifliche Einkommensteuer bemisst sich nach dem zu versteuernden Einkommen.
Sie beträgt jeweils in Euro für zu versteuernde Einkommen
1. bis 7834 € (Grundfreibetrag): 0
2. von 7835 € bis 13139 €: (939,68y + 1400)y
3. von 13140 € bis 52551 €: (228,74z + 2397)z + 1007
4. von 52552 € bis 250400 €: 0,42x − 8064
5. von 250401 € an: 0,45x − 15576
y ist ein Zehntausendstel des 7834 € übersteigenden Teils des auf einen vollen
Euro-Betrag abgerundeten zu versteuernden Einkommens. z ist ein Zehntausendstel
des 13139 € übersteigenden Teils des auf einen vollen Euro-Betrag abgerundeten
zu versteuernden Einkommens. x ist das auf einen vollen Euro-Betrag abgerundete
zu versteuernde Einkommen. Der sich ergebende Steuerbetrag ist auf
den nächsten vollen Euro-Betrag abzurunden.
(5) Bei Ehegatten, die zusammen zur Einkommensteuer veranlagt werden, beträgt
die tarifliche Einkommensteuer das Zweifache des Steuerbetrags, der sich
für die Hälfte ihres gemeinsam zu versteuernden Einkommens nach Absatz 1 ergibt
(Splitting-Verfahren).
Ihre Aufgabe ist es ein Programm zu schreiben, das auf der Kommandozeile als Parameter
ein zu versteuerndes Einkommen erhält und als Ergebnis die sich nach § 32 a (1) und (5)
ergebenden Steuerbeträge ausgibt.
Beispiel:
javac Steuer.java
java Steuer 55555.55
15269 Euro
10010 Euro (Splitting-Verfahren)
Java:
public class Einkommensteuer {
public static void main(String[] a) {
double einkommen = Double.parseDouble(a[0]);
double x,
y,
z,
steuer = 0,
splitting = 0;
if (einkommen <= 7834 && einkommen >= 0) { //Abschnitt für Einkommensteuer nach (1)
steuer = 0;
}
else if (einkommen < 0) {
System.out.println("Negatives Einkommen, Eingabe bitte überprüfen!");
}
else if (einkommen > 7834 && einkommen <= 13139) {
y = einkommen / 10000;
steuer = (939.68 * y + 1400) * y;
}
else if (einkommen > 13139 && einkommen <= 52551) {
z = einkommen / 10000;
steuer = (228.74 * z + 2397) * z + 1007;
}
else if (einkommen > 52551 && einkommen <= 250400) {
x = einkommen;
steuer = (0.42 * x) - 8064;
}
else if (einkommen > 250400) {
x = einkommen;
steuer = (0.45 * x) - 15576;
}
if (einkommen / 2 <= 7834 && einkommen / 2 >= 0) { //Abschnitt für Splitting-Verfahren
splitting = 0;
}
else if (einkommen < 0) {
System.out.println("Negatives Einkommen, Eingabe bitte überprüfen!");
}
else if (einkommen / 2 > 7834 && einkommen / 2 <= 13139) {
y = einkommen / 10000;
splitting = (939.68 * y + 1400) * y;
}
else if (einkommen / 2 > 13139 && einkommen / 2 <= 52551) {
z = (einkommen / 2 - 13139) / 10000;
splitting = (228.74 * z + 2397) * z + 1007;
}
else if (einkommen / 2 > 52551 && einkommen / 2 <= 250400) {
x = einkommen;
splitting = (0.42 * x) - 8064;
}
else if (einkommen / 2 > 250400) {
x = einkommen;
splitting = (0.45 * x) - 15576;
}
if (einkommen >= 0) {
System.out.println("Die Einkommensteuer beträgt: "+(int)(steuer)+"€");
System.out.println("Nach Splitting-Verfahren: "+(int)(splitting)*2+"€");
}
}
}
Bin für jeden Tip sehr dankbar!
Grüße