Ich soll mal wieder ein Programm für die Uni schreiben. Es geht um die Berechnung von Rationalen Zahlen. In meinem Programm wird eine Rechnung ausgeführt z.B. Bruch1 + Bruch2 und das Ergebnis ausgegeben. Die Aufgabe (Bruch1 + Bruch2 = Ergebnis) soll nun in einem Array gespeichert werden. Danach wird abgefragt, ob nochmal gerechnet werden soll und das Programm läuft von vorne. Wenn man beenden will (Abfrage auf "nein") soll das Programm alle gespeicherten Aufgaben nochmal ausgeben. Doch ein Array hat eine feste Länge und ist nicht variabel. Wenn ich nun mein Array auf 5 festlege und 6 Berechnungen durchführe, gibt es ExceptionOutOfBounds.
Eine mögliche Lösung wäre eine ArrayList, denn die ist variabel. Doch in der Aufgabe steht eigentlich explizit Array nicht ArrayList. Und vielleicht gibt es ja da einen Trick, um das doch mit einem Array zu lösen ?!
Eine andere unschöne aber simple Lösung wäre, dem Array einfach 1000 Stellen zu geben und dann am Ende alle null Stellen irgendwie "abzuschneiden" bzw. sie einfach nicht auszugeben.
Hier mal die main() zu meinem Prog. Hab es jetzt erstmal mit ArrayList gelöst.
Was meint ihr?
Eine mögliche Lösung wäre eine ArrayList, denn die ist variabel. Doch in der Aufgabe steht eigentlich explizit Array nicht ArrayList. Und vielleicht gibt es ja da einen Trick, um das doch mit einem Array zu lösen ?!
Eine andere unschöne aber simple Lösung wäre, dem Array einfach 1000 Stellen zu geben und dann am Ende alle null Stellen irgendwie "abzuschneiden" bzw. sie einfach nicht auszugeben.
Hier mal die main() zu meinem Prog. Hab es jetzt erstmal mit ArrayList gelöst.
Java:
package paketRationaleZahlen;
import java.util.ArrayList;
public class Start {
public static void main(String[] args) {
RationaleZahl bruch1 = new RationaleZahl(0,0);
RationaleZahl bruch2 = new RationaleZahl(0,0);
ArrayList<String> rechnungListe = new ArrayList<String>();
int durchlauf = 1;
do{
bruch1 = Rechnung.einlesen();
Rechnung.operation();
bruch2 = Rechnung.einlesen();
if(Rechnung.getOperator().equals("+")) {
System.out.println(Rechnung.addieren(bruch1, bruch2));
rechnungListe.add(Rechnung.addieren(bruch1, bruch2));
}
if(Rechnung.getOperator().equals("-")) {
System.out.println(Rechnung.subtrahieren(bruch1, bruch2));
rechnungListe.add(Rechnung.subtrahieren(bruch1, bruch2));
}
if(Rechnung.getOperator().equals("*")) {
System.out.println(Rechnung.multiplizieren(bruch1, bruch2));
rechnungListe.add(Rechnung.multiplizieren(bruch1, bruch2));
}
if(Rechnung.getOperator().equals("/")) {
System.out.println(Rechnung.dividieren(bruch1, bruch2));
rechnungListe.add(Rechnung.dividieren(bruch1, bruch2));
}
Rechnung.weiter();
durchlauf++;
}while(Rechnung.getWeiter().equals("j"));
if(Rechnung.getWeiter().equals("n")) {
System.out.println("--------Berechnet wurden--------");
System.out.println(rechnungListe);
}
}
}