Arraynamen an andere Klasse übergeben für allg. Rechnung

Morphastian

Mitglied
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
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ß
 

Michael...

Top Contributor
Ist denn Begriffe wie Vererbung/Interfaces bekannt? Wenn ich die Anforderung richtig verstanden habe liese sie sich mit einem Interface oder einer abstrakten Klasse lösen.
 

Flown

Administrator
Mitarbeiter
Ist jetzt blöd, weil du nur so einen kleinen Ausschnitt hergibst, aber ich würde die Typen in ein enum verwandeln und die enums haben noch dazu dein _SS gespeichert. Also ein Enum mit Feldern(in deinem Fall ein Array).

Sowas wie:

Java:
enum Typ {
   PI(Math.PI), E(Math.E);

   double value;

   private Typ(double value) {
      this.value = value;
   }

   public double getValue() {
      return value;
   }

}

/* Erschieß mich nicht, aber ich habs jetzt einfach so reingetippt, also keine Garantie. */


[EDIT]Da geb ich Michael... recht[/EDIT]
 

tfa

Top Contributor
Arrays haben keine Namen (Variablen haben welche).
Warum übergibst du der Methode nicht das Array selbst (Parameter vom Typ [c]long[][/c])?
 

Morphastian

Mitglied
Danke für die schnellen Antworten.

@Michael... - Selbst mit Interfaces hätten wir doch im Grunde das selbe Problem erneut oder sehe ich das jetzt so falsch?

@Flown - Gute Idee, wir werden das auf jeden Fall als nächstes versuchen.

@tfa - Haben wir bereits versucht, jedoch gab es da Probleme bei der Übergabe. Sämtliche Werte nahmen stets null an. GUI wurde jeweils bei der Übergabe an Schiffe() angepasst und in der Schiffe.java dies natürlich auch. Wenn du uns da eventuell Hilfestellung geben könntest wäre das echt super.


Eigentlich ist dieses Thema schon ein wenig peinlich, aber wir haben uns momentan wirklich festgefahren..
 

tfa

Top Contributor
Ich meine

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(...

kann ersetzt werden durch

Java:
public long _SS[] = new long[] { 550, 0, 360, 1, 1, 1 };
public static long Feee, Naaa, Deuuu;
 
public Schiffe(long menge, int aufschlag, long[] factorArray) {        
            Feee = (menge * factorArray[0]) + (((menge * factorArray[0]) * aufschlag) / 100);
            Naaa = (menge * factorArray[1]) + (((menge * factorArray[1]) * aufschlag) / 100);
            Deuuu = (menge * factorArray[2]) + (((menge * factorArray[2]) * aufschlag) / 100);
}
(Von der Sinnhaftigkeit der statischen Variablen mal abgesehen...).


Der Constructor wird dann eben so aufgerufen: [c]new Schiffe(1234L, 6789, _SS);[/c].
Mehr kann man mit diesem Beispielcode nicht machen.
 

Morphastian

Mitglied
Danke tfa und auch an die Anderen. Mit ein wenig Frickelei hats gepasst. So wie tfa es vorgeschlagen hat, hatten wir es auch, ist halt nur sehr schlau, wenn man die Variablen mit null initialisiert und sich dann wundert, dass sie null annehmen. Also wirklich bescheidene Arbeitsweise bei uns.

Problem ist jedenfalls erledigt, danke nochmal :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Arraynamen durch Variable festlegen lassen Allgemeine Java-Themen 5
R Arraylist in andere Klasse leiten und bearbeiten Allgemeine Java-Themen 10
E Swing andere schreibart für jButtoni (i = Zahl des Buttons) Allgemeine Java-Themen 6
perlenfischer1984 Lombok Builder soll andere Klasse bauen Allgemeine Java-Themen 4
R bei eclipse von java in eine andere programmiersprache wechseln? Allgemeine Java-Themen 2
B Chat auf andere Datentypen aufteilen Allgemeine Java-Themen 2
A Datum und Uhrzeit in andere Zeitzone umrechnen Allgemeine Java-Themen 7
X NetBeans Bilder und andere Dateien ins .jar schreiben und wieder aus .jar lesen Allgemeine Java-Themen 6
DanielsLPecke Java Arrays an andere Java Programme schicken und zurück Allgemeine Java-Themen 5
T Während des Programmlaufs andere Programme ausführen Allgemeine Java-Themen 1
F JTable mit Zellen die sich durch andere Eingaben füllen Allgemeine Java-Themen 1
M ZipOutputStream gleiche Datei andere Größe? Allgemeine Java-Themen 0
Todesbote Zeilen aus Excel in andere Excel Tabelle kopieren Allgemeine Java-Themen 0
N Objekte an eine andere Applikation übergeben Allgemeine Java-Themen 3
K LED-Matrix oder andere "Hardware" für JavaProgrammierung Allgemeine Java-Themen 9
F Array viel zu groß...andere Lösungen? Allgemeine Java-Themen 12
N Static oder andere Lösung Allgemeine Java-Themen 5
L Eine jar verwenden, die intern auf eine andere jar zugreift Allgemeine Java-Themen 7
B JAR Datei führt eine andere JAR Datei aus Allgemeine Java-Themen 2
M Methoden/Klassen für andere Projekte Allgemeine Java-Themen 4
S Von einer ArrayList in die andere schreiben? Allgemeine Java-Themen 6
Z Daten von einer Klasse in eine andere übertragen Allgemeine Java-Themen 8
E Wert in andere Klasse übernehmen Allgemeine Java-Themen 4
E Werte in andere Klasse übernehmen Allgemeine Java-Themen 8
S String in eine andere Klasse übergeben Allgemeine Java-Themen 25
S Mit einem jButton eine andere Klasse öffnen Allgemeine Java-Themen 2
J Array Sortierung auf andere Arrays anwenden Allgemeine Java-Themen 6
T Webservice definieren und andere Webservice aufrufen Allgemeine Java-Themen 8
W xml File einlesen und in eine andere xml File einfügen.. Allgemeine Java-Themen 2
M Javamail -> andere Möglichkeit für Attachment Allgemeine Java-Themen 5
S Passt eine Flaeche in eine andere? Allgemeine Java-Themen 2
K import- Anweisung fehlerhaft und andere Fehler (eclipse) Allgemeine Java-Themen 2
M Map umformen und in andere Map schreiben Allgemeine Java-Themen 2
R if-Anweisung wird angemeckert, andere identische nicht Allgemeine Java-Themen 9
M Andere Möglichkeit zu casten Allgemeine Java-Themen 8
R Wert von einer Klasse in eine andere bekommen Allgemeine Java-Themen 6
A andere Methode "abschiessen" Allgemeine Java-Themen 6
I Teile von ArrayList in eine andere kopieren? Allgemeine Java-Themen 2
C Prüfen, ob eine Methode eine andere überschreibt! WIE? Allgemeine Java-Themen 8
A Java oder andere Sprache? Was ist geeigneter? Allgemeine Java-Themen 55
J Netbeans: wie auf grafische elemente zugreifen, andere Datei Allgemeine Java-Themen 2
G Da Jikes nicht mit java 5 geht, gibt es eine andere. Allgemeine Java-Themen 4
P Mehrzeiligen Text aus JTA lesen und in andere JTA kopieren Allgemeine Java-Themen 7
M Funktion als Parameter oder andere Möglichkeit Allgemeine Java-Themen 3
Y Aus einem Java Programm andere (Exe-)Programme starten Allgemeine Java-Themen 3
S Daten in andere Klasse übergeben Allgemeine Java-Themen 5
S Wie ICQ, AIM und andere IM mit Java steuern? Allgemeine Java-Themen 2
G JCreator, andere Editoren ? Allgemeine Java-Themen 4
G Connection conn in andere Klasse / Objekt weitergeben? Allgemeine Java-Themen 17
K Andere Interpretation eines Typs Allgemeine Java-Themen 7
H Methoden in andere Files auslagern Allgemeine Java-Themen 6
H Andere Software fernsteuern Allgemeine Java-Themen 7
M Zugriff auf andere Prozesse Allgemeine Java-Themen 3
M Methodenübersicht einer Klasse einsehen Allgemeine Java-Themen 14
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
A Zweite Service Klasse beim Kompilieren Allgemeine Java-Themen 6
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
H Kombination Interface und Abstrakte Klasse bei Generics Allgemeine Java-Themen 3
EinNickname9 Best Practice Singleton und Singleton mit Instanz zu anderer Klasse -Pattern Allgemeine Java-Themen 30
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
missy72 Klassen Eigene Klasse MessageWindow ähnlich der Alert Klasse Allgemeine Java-Themen 2
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
kanywayne Java programmieren: Polynom Klasse Allgemeine Java-Themen 4
L Die abzuleitende Klasse als Parameter übergeben Allgemeine Java-Themen 4
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
C Klasse mit Mockito simulieren Allgemeine Java-Themen 9
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
S static in Interface und Klasse Allgemeine Java-Themen 2
W Was genau sind IOTools? Kann ich stattdessen nicht die Scanner Klasse verwenden? Allgemeine Java-Themen 3
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
D javassist API Klasse in MethodCall ermitteln Allgemeine Java-Themen 8
kodela Klasse mit "gezipten" Daten Allgemeine Java-Themen 6
J Builder Klasse mit Lombok bauen Allgemeine Java-Themen 2
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
M [SOAP] - Klasse aus WSDL ausschließen Allgemeine Java-Themen 2
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
X Klassen Klasse BreakIterator Allgemeine Java-Themen 6
kodela Klassen Klasse "vergisst" ihre Daten Allgemeine Java-Themen 2
pkm Kann eine ServerSocket-Klasse nicht stateful sein? Allgemeine Java-Themen 4
E Socket Dynamische Klasse von ObjectOutputStream lesen. Allgemeine Java-Themen 8
M Matcher-Klasse findet match nicht Allgemeine Java-Themen 6
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
S Seltsames Ergebnis mit Date-Klasse Allgemeine Java-Themen 6
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
Neoline Klassen Singleton Klasse buchmanager Allgemeine Java-Themen 19
M Kapselung Modellierung von Intervallen: Klasse Interval Allgemeine Java-Themen 4
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
ReinerCoder Klasse kann nicht public deklariert werden Allgemeine Java-Themen 2
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben