Programm optimieren?
-
Hi,
kann man dieses Programm noch optimieren?
import java.io.*; class bezugskosten { double listenpreis; double rabattsatz; double skontosatz; double bezugskosten; double zielpreis; double barpreis; double bezugspreis; double rabatt; double skonto; void rechnen() { rabatt = listenpreis * rabattsatz / 100; zielpreis = listenpreis - rabatt; skonto = zielpreis *skontosatz /100; barpreis = zielpreis - bezugskosten; bezugspreis = barpreis + bezugskosten; } public static void main (String[]arguments) throws IOException { BufferedReader tastatur = new BufferedReader (new InputStreamReader(System.in)); bezugskosten neu = new bezugskosten(); String eingabe; System.out.print("Geben Sie den Listenpreis ein!"); eingabe = tastatur.readLine(); neu.listenpreis = Double.parseDouble(eingabe); System.out.print("Geben Sie den Rabattsatz ein!"); eingabe = tastatur.readLine(); neu.rabattsatz = Double.parseDouble(eingabe); System.out.print("Geben Sie den Skontosatz ein!"); eingabe = tastatur.readLine(); neu.skontosatz = Double.parseDouble(eingabe); System.out.print("Geben Sie die Bezugskosten ein!"); eingabe = tastatur.readLine(); neu.bezugskosten = Double.parseDouble(eingabe); neu.rabatt = 0; neu.zielpreis = 0; neu.skonto = 0; neu.barpreis = 0; neu.bezugspreis = 0; neu.rechnen(); System.out.println("Listenpreis " + neu.listenpreis); System.out.println("Lieferrabatt " + neu.rabattsatz); System.out.println("Zieleinkaufspreis " + neu.zielpreis); System.out.println("Lieferskonto " + neu.skontosatz); System.out.println("Bareinkaufspreis " + neu.barpreis); System.out.println("Bezugskosten " + neu.bezugskosten); System.out.println("Bezugspreis " + neu.bezugspreis); } }
-
Divisionen sind eigentlich nicht so gut wie Multiplikationen.
Also bei /100 könnte man *0.01 schreiben.
Ansonsten ist das Programm etwas klein um da etwas gescheites über Optimierungen sagen zu können.
-
Ja, in Bezug auf guten Stil. Variablen sollten erst definiert werden, wenn sie gebraucht werden.
Und Klassennamen schreibt man in Java groß.
-
Man könnte auch noch Acces Modifier verwenden. rechnen() sieht zB sehr ach private aus
-
Das ganze Design ist IMO mies. Wieso muss der Benutzer der Klasse erst alle (öffentlich zugänglichen) Variablen auf 0 setzen?
Alle notwendigen Variablen sollten im Konstruktor übergeben werden. Momentan hat die Klasse nur einen Zweck: rechnen. Dann kannst du auch gleich rechnen() im Ctor aufrufen. Die Variablen würde ich private machen und getter anbieten.
-
könnte denn jemand mal eine "profi"-version posten? So zum vergleich?
-
> kann man dieses Programm noch optimieren?
auf was? auf Geschwindigkeit?
auf Programmgröße? (ich mein die Größe des Bytecodes)
-
code-größe und geschwindigkeit (2. ist optional)
-
So ein Programm klatscht man einfach in die main() und gut ist, jeder Gedanke an Design oder Optimierung ist hier absolute Verschwendung von Ressourcen.
-
Seh ich genau so. Eine Wiederverwendung wird wohl nicht stattfinden
-
SirLant schrieb:
So ein Programm klatscht man einfach in die main() und gut ist, jeder Gedanke an Design oder Optimierung ist hier absolute Verschwendung von Ressourcen.
CengizS schrieb:
Seh ich genau so. Eine Wiederverwendung wird wohl nicht stattfinden
Offensichtlich versucht hier ein Anfänger, das Programmieren zu lernen und dafür ist ein schneller h4ck genau richtig, sehe ich auch so.
-
Zum Thema sinnloses optimieren :
Man könnte Fomeln optimieren:
z. B. kann man für den Audruck:
a * a * a + 3 * a * a * b + 3 * a * b * b + b * b * b
auch
(a + b) * (a + b) * (a+ b)
schreibenerster Ausdruck enthält 13 Operatoren
zwetier Ausdruck enthält 5 Operatorender zweite Ausdruck wird wesentlich schneller ausgewertet als der erste - beide Ausdrücke liefern jedoch das gleiche Ergebnis