Frage von BopmitP, 39

Wo ist der Fehler bei meinem Java-Quellcode?

Hallo, ich habe als Hausaufgabe auf folgende Aufgabe in Java in BlueJ zu lösen:

Schreiben sie ein Programm zur Berechnung einer Steuer. Wenn der zu versteuernde Betrag kleiner als 5000 Euro ist, müssen gar keine Steuern gezahlt werden. Bei einem Betrag ab 5.000 Euro sind 10% Steuern zu zahlen, bei einem Betrag ab 20.000 Euro 15% und bei einem Betrag ab 50.000 Euro sogar 20%. Eingabe: Der zu versteuernde Betrag Ausgabe: Der Steuersatz und die zu zahlenden Steuern.

mein Lösungsvorschlag

public class steuerrechner
{
  public void konsoleneinundausgabe(int betrag)
   {
   int ss = 0;
   if (betrag < 5000)
   {
       ss=0;
    }
   if (betrag >= 5000 && betrag < 20000)
   {
       ss=10;
    }
   if (betrag >= 20000 && betrag <50000)
   {
       ss=15;
    }
   if (betrag > 50000)
   {
       ss=20;
    }
   
   int zs = 0;
   zs=ss/100*betrag;
 
    
   int rb = 0;
   rb=betrag-zs;
   
   
   System.out.println("Bei dem Betrag "+betrag+" € fallen "+ss+"% Steuern an.");
   System.out.println("Das bedeutet, dass der Staat Sie um " +zs+ "€ erleichtern wird.");
   System.out.println("Somit bleiben für Sie noch " +rb+ " € übrig.");
}
}

Leider wird der zu versteuernde Betrag so immer mit 0€ angezeigt. Was mache ich falsch?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von JavaTheHutt, 37

Als erstes ist die folgende Abfrage + Zusweisung überflüssig:

if (betrag < 5000)
{
   ss=0;
}

Ansonsten hast du einen Datentyp gewählt, der ganzzahlige Werte enthalten kann. Was hier passiert ist folgendes: du hast die Variable "ss" (in Deutschland übrigens eine schlechte Bezeichnung für alles) vom Typ "int", die maximal "20" sein kann. Diese dividierst du durch "100". Da du "int" also einen ganzzahligen Datentyp genommen hast, wird auch eine ganzzahlige Division durchgeführt. D.h. 20 / 100 = 0,2 - da das Ergebnis eine ganze Zahl sein muss, wird alles nach dem Komma abgeschnitten. Ergo wird auf die Variable "zs" immer "0" geschrieben und dann ausgegeben.

Du solltest einfach den Datentyp deiner Variablen "ss" und "zs" gegen einen Datentyp für Fließkommazahlen austauschen. Das sind in Java z.B. "float" oder "double".

Kommentar von BopmitP ,

Das war die Lösung, vielen Dank! :D

Antwort
von sylarke, 39

Die einzige Möglichkeit, dass die Variable "Betrag" 0 ist, ist das du beim Funktionsaufruf als Parameter 0 eingegeben hast.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten