i-ten Bruch mit i-tem Bruch addieren und ausgeben lassen

ds1337

Mitglied
Hallo an alle,

hoffe das Thema gabs nicht schon, konnte jedenfalls in der SuFu nichts passendes finden. Wir sollen einen Bruchrechner erstellen, welcher Brüche in Form von Usereingaben in einem Array speichert.

Es sollen insgesamt zwei Arrays erstellt werden.

So, jetzt sollen jeweils der i-te Bruch des ersten Arrays mit dem i-ten Bruch des zweiten Arrays addiert werden.
Die Ergebnisse sollen anschließend in einem weiteren Array gespeichert werden.

Ich denke ich bin auch fast durch allerdings ist irgendwo der Wurm drin, ich denke mal die letzte for-Schleife ist das Problem, damit habe ich aktuell noch Verständnis Probleme.

Wäre sehr dankbar über Tipps und Hilfestellungen!

PS: Die Assertions bitte ignorieren, ich weiß die sind an der Stelle zweckentfremdet.

Java:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Assertions {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Länge des ersten Arrays festlegen: ");
        int zahl1 = input.nextInt();
        System.out.println("Länge des zweiten Arrays festlegen: ");
        int zahl2 = input.nextInt();

        assert zahl1 >= 1 : "Eingegebene Zahl darf nicht kleiner eins sein";
        assert zahl2 >= 1 : "Eingegebene Zahl darf nicht kleiner eins sein";

        Bruch[] bruch1 = new Bruch[zahl1];
        Bruch[] bruch2 = new Bruch[zahl2];

        for (int i = 0; i < bruch1.length; i++) {
            System.out.println("Bitte Zähler und Nenner eingeben: ");
            int zaehler = input.nextInt();
            int nenner = input.nextInt();
            assert nenner >= 1 : "Eine Division duch Null ist nicht zulässig";
            bruch1[i] = new Bruch(zaehler,nenner);
            System.out.println("Der Bruch lautet: " + bruch1[i]);
        } // Bruch1 for-Schleife

        for (int i = 0; i < bruch2.length; i++) {
            System.out.println("Bitte Zähler und Nenner eingeben: ");
            int zaehler = input.nextInt();
            int nenner = input.nextInt();
            assert nenner >= 1 : "Eine Division durch Null ist nicht zulässig";
            bruch2[i] = new Bruch(zaehler, nenner);
        } // Bruch2 for-Schleife

        List<Object> resultArray = new ArrayList<Object>();

        for (int i = 0; i < bruch1.length; i++) {
            for (int j = 0; j < bruch2.length; j++) {
                resultArray.add(Bruch.addiere(bruch1[i],bruch2[j]));
            }
        }
        System.out.println(resultArray);
    }
}
 
Ich nehme mal an, dass Bruch.addiere tut was es soll.
Dann wäre meine Vermutung, dass das letzte system.out.println das Problem ist. Soweit ich sehen kann ist resultarray ein List<bruch>. Um das mit println benutzen zu können muss in der Bruch klasse die tostring methode von object überschrieben werden, damit das Programm weiß, wie es ein Objekt der klasse Bruch printen soll.
Um dann jeden einzelnen bruch printen zu können kannst du for(Bruch a : resultArray) {System.out.println(a);} benutzen.
 

mihe7

Top Contributor
ich denke mal die letzte for-Schleife ist das Problem, damit habe ich aktuell noch Verständnis Probleme.
Du addierst jedes Element des ersten Arrays mit jedem Element des zweiten Arrays. Das würde ich
jetzt sollen jeweils der i-te Bruch des ersten Arrays mit dem i-ten Bruch des zweiten Arrays addiert werden
anders interpretieren.

Um den i-ten Bruch des ersten Arrays mit dem i-ten Bruch des zweiten Arrays addieren zu können, muss im zweiten Array ein i-ter Bruch erstmal existieren. D. h. als Vorbedingung gilt zahl2 >= zahl1.

Dann kann einfach gerechnet werden:
Java:
Bruch[] resultArray = new Bruch[zahl1];
for (int i = 0; i < zahl1; i++) {
    resultArray[i] = Bruch.addiere(bruch1[i], bruch2[i]);
}

Bzgl. der Ausgabe s. Kommentar von @Keeperofnature
 

Neue Themen


Oben