Hallo,
ich möchte nicht lange drumrumreden. Folgendes Problem:
Wir sind momentan dabei einen Rechner für ein Spiel zu programmieren (mit GUI). Jedenfalls kann der User per JTextfields gewisse Zahlen eintragen, die sollen dann nach einem bestimmten Schema berechnet werden. Ich habe eine Klasse für die GUI und eine Klasse, die die Berechnung von Werten übernehmen soll. Folgende Codeausschnitte sind relevant:
GUI-Klasse
Ich habe diese Klasse stark gekürzt und auf ein Beispiel beschränkt. Es gibt jedenfalls mehrere Typen von Schiffen, die in dieser Klasse an die Rechnerklasse übergeben werden.
Nun hier kommt das eigentliche Problem:
Schiffe
Ich habe ein Array, iIn diesem Fall _SS[], welches mit Werten befüllt ist. Wie im Beispiel zu erkennen, sind nur die ersten 3 Werte des Arrays relevant. Jedoch habe ich mehrere "Typen" die berechnet werden sollen, es ist jedes Mal die gleiche Rechnung. Besteht irgendwie eine halbwegs schöne Möglichkeit, eine "allgemeine" Rechnung zu schreiben, den Namen des Arrays aus der GUI zu übergeben, um dann von 60 Zeilen Codeberechnung wegzukommen? Es soll quasi aus der GUI der Typ übergeben werden und in die Rechnung eingefügt werden. Sprich an Stelle von "_SS[.." soll der übergebene Wert automatisch eingefügt werden.
In etwa dann sowas:
Simples Problem, aber irgendwie stehen wir auf dem Schlauch. Den String an sich einzusetzen bringt nicht viel, da eine Multiplikation von String und long kollidiert.
Ich hoffe jemand kann uns bei diesem Problem helfen. Danke schon mal.
Gruß
ich möchte nicht lange drumrumreden. Folgendes Problem:
Wir sind momentan dabei einen Rechner für ein Spiel zu programmieren (mit GUI). Jedenfalls kann der User per JTextfields gewisse Zahlen eintragen, die sollen dann nach einem bestimmten Schema berechnet werden. Ich habe eine Klasse für die GUI und eine Klasse, die die Berechnung von Werten übernehmen soll. Folgende Codeausschnitte sind relevant:
GUI-Klasse
Java:
public final JFormattedTextField spioInput = new JFormattedTextField();
public final JFormattedTextField spioAufschlag = new JFormattedTextField();
public final JFormattedTextField feOutput = new JFormattedTextField();
public final JFormattedTextField naqOutput = new JFormattedTextField();
public final JFormattedTextField deuOutput = new JFormattedTextField();
public void ...
public void SS() {
try {
long a = Long.parseLong(spioInput.getText());
int b = Integer.parseInt(spioAufschlag.getText());
new Schiffe(a, b, "SS");
feOutput.setText(Long.toString(rechnungen.Schiffe.Feee));
naqOutput.setText(Long.toString(rechnungen.Schiffe.Naaa));
deuOutput.setText(Long.toString(rechnungen.Schiffe.Deuuu));
} catch (Exception e) {
e.printStackTrace();
}
}
Ich habe diese Klasse stark gekürzt und auf ein Beispiel beschränkt. Es gibt jedenfalls mehrere Typen von Schiffen, die in dieser Klasse an die Rechnerklasse übergeben werden.
Nun hier kommt das eigentliche Problem:
Schiffe
Java:
public long _SS[] = new long[] { 550, 0, 360, 1, 1, 1 };
public static long Feee, Naaa, Deuuu;
public Schiffe(long menge, int aufschlag, String typ) {
if (typ.equals("SS")) {
Feee = (menge * _SS[0]) + (((menge * _SS[0]) * aufschlag) / 100);
Naaa = (menge * _SS[1]) + (((menge * _SS[1]) * aufschlag) / 100);
Deuuu = (menge * _SS[2]) + (((menge * _SS[2]) * aufschlag) / 100);
}
if (typ.equals(...
Ich habe ein Array, iIn diesem Fall _SS[], welches mit Werten befüllt ist. Wie im Beispiel zu erkennen, sind nur die ersten 3 Werte des Arrays relevant. Jedoch habe ich mehrere "Typen" die berechnet werden sollen, es ist jedes Mal die gleiche Rechnung. Besteht irgendwie eine halbwegs schöne Möglichkeit, eine "allgemeine" Rechnung zu schreiben, den Namen des Arrays aus der GUI zu übergeben, um dann von 60 Zeilen Codeberechnung wegzukommen? Es soll quasi aus der GUI der Typ übergeben werden und in die Rechnung eingefügt werden. Sprich an Stelle von "_SS[.." soll der übergebene Wert automatisch eingefügt werden.
In etwa dann sowas:
Java:
Feee = (menge * TYP[0]) + (((menge * TYP[0]) * aufschlag) / 100);
Naaa = (menge * TYP[1]) + (((menge * TYP[1]) * aufschlag) / 100);
Deuuu = (menge * TYP[2]) + (((menge * TYP[2]) * aufschlag) / 100);
Simples Problem, aber irgendwie stehen wir auf dem Schlauch. Den String an sich einzusetzen bringt nicht viel, da eine Multiplikation von String und long kollidiert.
Ich hoffe jemand kann uns bei diesem Problem helfen. Danke schon mal.
Gruß