Informatik - Java?

2 Antworten

Naja, jeder Datentyp, der kein primitiver Datentyp ist (boolean, char, byte, short, int, long, float, double), ist automatisch ein komplexer Datentyp. Da das so ziemlich auf alles zutrifft, kannst du dir einfach irgendein Java-Projekt anschauen, um haufenweise komplexe Datentypen zu sehen. Man muss ja sogar eine Klasse für einen komplexen Datentyp anlegen, um überhaupt ein "Hello, World!"-Programm zu machen. Sogar der String selber ist ein komplexer Datentyp.

Um Quellcodes von anderen Leuten zu erkunden, eignet sich z.B. Github sehr gut. Du kannst dir da ja einfach mal das eine oder andere Projekt raussuchen. Vielleicht das hier: https://github.com/hhaslam11/Text-Fighter

Ich hab hier mal ne Klasse gemacht für Brüche. Methoden für die Ausrechnung, Addition, Subtraktion, Multiplikation, Division und vergleichen der Brüche hab ich mal als Beispiele implementiert

Der Code der Klasse:

public class Fraction {
    private int numerator;   // Zähler
    private int denominator; // Nenner

    public Fraction(int numerator, int denominator) {
        if (denominator == 0) {  // Überprüfen, ob der Nenner 0 ist (ungültiger Bruch)
            throw new IllegalArgumentException("Der Nenner darf nicht null sein.");
        }
        this.numerator = numerator;
        this.denominator = denominator;
    }

    public int getNumerator() {
        return numerator;
    }

    public int getDenominator() {
        return denominator;
    }

    public double getValue() {
        return (double) numerator / denominator;  // Berechnung des Dezimalwerts des Bruchs
    }

    public Fraction add(Fraction other) {
        int newNumerator = this.numerator * other.denominator + other.numerator * this.denominator;
        int newDenominator = this.denominator * other.denominator;
        return new Fraction(newNumerator, newDenominator);  // Rückgabe einer neuen Fraction-Instanz mit dem Summenbruch
    }

    public Fraction subtract(Fraction other) {
        int newNumerator = this.numerator * other.denominator - other.numerator * this.denominator;
        int newDenominator = this.denominator * other.denominator;
        return new Fraction(newNumerator, newDenominator);  // Rückgabe einer neuen Fraction-Instanz mit dem Differenzbruch
    }

    public Fraction multiply(Fraction other) {
        int newNumerator = this.numerator * other.numerator;
        int newDenominator = this.denominator * other.denominator;
        return new Fraction(newNumerator, newDenominator);  // Rückgabe einer neuen Fraction-Instanz mit dem Produktbruch
    }

    public Fraction divide(Fraction other) {
        int newNumerator = this.numerator * other.denominator;
        int newDenominator = this.denominator * other.numerator;
        return new Fraction(newNumerator, newDenominator);  // Rückgabe einer neuen Fraction-Instanz mit dem Quotientenbruch
    }

    public boolean equals(Fraction other) {
        return this.numerator == other.numerator && this.denominator == other.denominator;  // Überprüfen, ob zwei Brüche gleich sind
    }

    public String toString() {
        return numerator + "/" + denominator;  // Rückgabe einer Zeichenkette, die den Bruch repräsentiert
    }
}

Der Code zum testen:

public class FractionTester {
    public static void main(String[] args) {
        Fraction fraction1 = new Fraction(3, 4);
        Fraction fraction2 = new Fraction(1, 2);

        Fraction sum = fraction1.add(fraction2);  // Addition der Brüche
        System.out.println(fraction1 + " + " + fraction2 + " = " + sum);

        Fraction difference = fraction1.subtract(fraction2);  // Subtraktion der Brüche
        System.out.println(fraction1 + " - " + fraction2 + " = " + difference);

        Fraction product = fraction1.multiply(fraction2);  // Multiplikation der Brüche
        System.out.println(fraction1 + " * " + fraction2 + " = " + product);

        Fraction quotient = fraction1.divide(fraction2);  // Division der Brüche
        System.out.println(fraction1 + " / " + fraction2 + " = " + quotient);
    }
}

Frag ruhig falls du noch Fragen hast.

Woher ich das weiß:Hobby

Done88  18.05.2023, 23:57

eigentlich solltest du Klassenvariablen machen nh

0