Java [Basic] Verständnissfrage bei einer Methode

Status
Für weitere Antworten geschlossen.

Knuddelbearli

Commodore
Registriert
Nov. 2009
Beiträge
4.530
Moin ich lerne grade in der Schule Java jetzt habma ein kleines Projekt bekommen zum while Üben hatte dort ein problem das ich zwar durch ausprobieren gelöst habe aber imemr noch nicht verstehe wieso ich dieses problem habe.

Aufgaben stellung war:
Implementiere sie eine Klasse BruchFolge1 mit folgenden Methoden für die nachfolgende skizzierte Bruchfolge:
1/1 3/2 5/4 7/8 ....
*ausgebenFolge(anz) - Gibt die Folge für anz Brüche aus.
War keine große Sache hatte ich innerhalb weniger Minuten fertig
Code:
     public void ausgebenFolge ( int anz )
    {
        int bruchA = 1;
        int bruchB = 1;
        int zahler = 0;
            while ( zahler < anz )
            {
                System.out.println ( bruchA + "/" + bruchB );
                bruchA = bruchA + 2;
                bruchB = bruchB * 2;
                zahler++;
            }
      }

*ausgebenWerte(anz) - Gibt die berechneten Werte für anz Brüche aus.
hier hatte ich lange Zeit Probleme, das Ergebnis muss ja ein float sein wenn ich aber bruchA und bruchB dividiere kommt obwohl ergebniss ein Float ist imer nur 1.0 oder 0.0 raus wieso den das? Erst als ich bruchA und bruchB auch auf float umgesetzt habe hats funktioniert.
Code:
    public void ausgebenWert ( int anz )
    {
         float bruchA =1;
         float bruchB =1;
         int zahler =0;
         float ergebniss = 0;
            while ( zahler < anz )
            {
                ergebniss = bruchA / bruchB;
                System.out.println ( ergebniss );
                bruchA = bruchA + 2;
                bruchB = bruchB * 2;
                zahler++;
            }
    }
 
Wenn die beiden Operanden (bruchA und bruchB) noch Integer sind, wird die Division als Ganzzahldivision durchgeführt und das Ergebnis aus dieser Division zu float gecastet (konvertiert), damit es in der float-Variable gespeichert werden kann.
Bei einer Ganzzahldivision werden aber alle Nachkommastellen abgeschnitten, weshalb die Operanden vor der Operation schon float sein müssen.
 
hmm was wäre dann wenn ich nen int wert mit einem float wert verrechne ? nimmt er immer das passendere ?
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben