OOP Wie schreib ich dieses Programm am besten?

pisco

Bekanntes Mitglied
Hey Leute,
also ich hab einen Haufen von Formeln in meinem Fach Investition & Finanzierung und möchte mir ein Programm schreiben um all diese mit knopfdruck berechnen zu können:

also hätte mir ein einfaches user Interface gedacht mit welchem ich mittels switch case auswähle was ich will und dann halt in die jeweilige Fkt. spring.

NUR: Ich muss zu jeder Formel eine Methode machen und da ich ja Werte in der Formel brauch immer mit

Java:
System.out.println("geben sie den zinsatz ein:" );
zins = sc.nextInt();

//blablabla

Irgendwie wird dann aus einer einfachen Formel die eigentlich eine Zeile lang ist immer eine verdammt voll gepackte Methode mit mid 5 print()s.

Wie kann ich das einfacher und flexibler gestalten?

Ich möchte je nach Formel nur bestimmte Werte abfragen und einfach weitere Formeln dazu coden können.

gruss und dank euch für eure Antwort
 
Du kannst dir nen paar prints sparen indem du Code der öfter vorkommt zusammenfast, z.b. sowas:

Java:
private String read(String message) {
    System.out.print(message + ": ");
    return sc.nextLine();
}

private int readInt(String message) {
    String line = read(message);
    // als int parsen
    return i;
}

private double readDouble(String message) {
    String line = read(message);
    // als double parsen
    return d;
}

Dann schreibst du später in deinen Methoden nur noch:
Java:
public double calcFormel() {
    double zins = readDouble("Bitte Zins eingeben");
    double guthaben = readDouble("Bitte Guthaben eingeben");
    int jahre = readInt("Bitte die Anzahl der Jahre eingeben");
    return zins + guthaben * jahre - 42;
}

Das ganze noch mit nen bissl exceptionhandling ausstatten und dann kannste damit recht einfach deine Formeln umsetzen.
 
erstmal vielen dank für deine Antwort ;D

2 Fragen hät ich noch:

Heißt parsen umwandeln oder was dann?

Warum schreibst du return d? d is ja ned deklariert...

gruss und danke für deine Antwort
 
ja, parsen heißt z.B. vom String in Double etc.
Code:
Double.parseDouble(message);

Da oben der hat d returned weil du das Kommentar durch soetwas ähnliches ersetzen solltest:
Code:
double d = Double.parseDouble(message);

🙂
 
Das Parsen ist unschön, wenn bspw. nach Integer geparst, aber gar keine Zahl, sondern Buchstaben eingegeben worden sind; es fliegt dann eine Exception, die behandelt werden sollte. Besser gleich die Klasse Scanner benutzen, die gar so schöne Methoden wie hasNextInt() und nextInt() bereitstellt.
 
Und nextInt() schmeißt keine Exception wenn du was falsches eingibst? 😉
Außerdem habe ich ja auch geschrieben dass man da noch Exceptionhandling einbauen muss.
 
ja ich denke auch, dass die angehensweise hier so stimmt in beiden fällen hätte man exceptions,
wobei für ein anfänger hier klarer wird was alles falsch eingegeben werden kann.

die alternative eine richtige oder falsche eingabe zu haben wäre regex zu verwenden, aber das wäre ja schon ein etwas kompliziertes feld ne?
 

Zurück
Oben