Frage zu Typecasting und Wrapper Klassen

joschi2000

Mitglied
Hallo,
ich habe ein Problem ich muss für die Schule diese Aufgabe lösen, aber ich komme einfach nicht auf die Lösung.

Aufgabenstellung:
In dieser Aufgabe geht es auch um die Division zweier Zahlen. Es gibt eine bereits implementierte Methode, die jedoch ein paar Fehler enthält. Diese Methode soll die als Zeichenkette übergebene Zahl a durch die ebenfalls als Zeichenkette übergebene Zahl b teilen. Das Ergebnis dieser Division soll dann noch durch 2 geteilt werden.

In der Main.java, darf ich nichts verändern, alles soll nur in Mathe.java umgesetzt werden.
Java:
public class Mathe {
  public double div(String a, String b){
    double ergebnis = 0.0;
    
    int aDouble = Integer.parseInt(a);
    int bDouble = (int) Double.parseDouble(b);
    
    int zwischenergebnis = (int) aDouble / bDouble;
    ergebnis = zwischenergebnis / (double) 2;
   
    return ergebnis;
  }
}

public class Main {
    public static void main(final String args[]) {
        Mathe mathe = new Mathe();
        System.out.println("a = 2, b = 3: "+mathe.div("2", "3"));
        System.out.println("a = 6.6, b = 2: "+mathe.div("6.6", "2"));
        System.out.println("a = 1.0, b = 1: "+mathe.div("1.0", "1"));
        System.out.println("a = 5, b = 2.5: "+mathe.div("5", "2.5"));
    }
}

Kann mir hier bitte jemand bei helfen?
Danke.
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
ich habe ein Problem ich muss für die Schule diese Aufgabe lösen, aber ich komme einfach nicht auf die Lösung.

Gut wäre wenn du uns noch verratest wobei den Problem genau liegt.
Verstehst du die Aufgabenstellung nicht? Verstehst du den Code nicht? .....

Kleiner Tipp:
"int" ist ein ganzzahliger Datentyp, "double" hingegen ein Fließkomma Datentyp
Bei dem Code wird teilweise hin und her gecastet dadurch verfälscht sich natürlich das Ergebnis.

Schreibe ein paar Konsolenausgaben zwischen dein einzelnen Zeilen der Methode "div" hin und lasse dir die Werte ausgeben, so kannst du nachvollziehen welche Variable welchen Wert hat. Überlege ob das Zwischenergebnis passt bzw. warum es vielleicht nicht passt.
 

joschi2000

Mitglied
Hallo Joose,

ja verstehe den code nicht.
Wir sollen den code glaube ich so korrigieren das die Ausgabe richtig ist, da sind ja extra fehler eingabaut.
Das ist mein problem.
 

Joose

Top Contributor
Java:
    int aDouble = Integer.parseInt(a);
    int bDouble = (int) Double.parseDouble(b);

Wandelt die String Parameter "a" und "b" um in Zahlen Datentypen

Java:
    int zwischenergebnis = (int) aDouble / bDouble;

Sollte eigentlich selbst erklärend sein. Hier wird die eine Zahl durch die andere Zahl dividiert und das Ergebnis gespeichert

Java:
    ergebnis = zwischenergebnis / (double) 2;

Hier wird das Zwischenergebnis nochmals durch 2 geteilt

Java:
    return ergebnis;

Rückgabe des Ergebnis.

Und hier nochmal mein Tipp von oben:
"int" ist ein ganzzahliger Datentyp, "double" hingegen ein Fließkomma Datentyp
Bei dem Code wird teilweise hin und her gecastet dadurch verfälscht sich natürlich das Ergebnis.

Beispiel:
Java:
double x = 0.2463;
int a = (int) x; // Alle ab dem Komma (rechts neben dem Komma) wird einfach abgeschnitten und geht verloren
System.out.println(a); // Ausgabe: 0
 

joschi2000

Mitglied
Ah ok, danke, habe jetzt den Code verstanden.

Habe alles durch double ersetzt, jetzt habe ich beim zweiten String das Problem 6.6/2/2 da komt 1.5 raus müsste aber 1.65 sein, wenn ich nachrechne.

Java:
public class Mathe {
  public double div(String a, String b){
    double ergebnis = 0.0;
    
    double aDouble = (int) Double.parseDouble(a);
    double bDouble = (int) Double.parseDouble(b);  
    
    double zwischenergebnis = aDouble / bDouble;
    ergebnis = zwischenergebnis / (double) 2;
    
    return ergebnis;
  }
}
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Oben