Rechnen mit Java und Übergabe in versch. Klassen

Michael8784

Grünschnabel
Da ich dazu verdonnert (uni) wurde mich in Java einzuarbeiten und ein Programm zu schreiben, war ich auch schon fleissig und habe einiges dahingehend geschafft (Layout in swing usw.).

Jetzt komme ich aber gerade irgendwie nicht weiter und würde mich über ein bisschen Hilfe echt freuen. :)

Problem: siehe Aufgabenstellung..ne spass. ;)

Also: der Benutzer hat die Möglichkeit eine Liste zu befüllen, die Einträge setzen sich aus einer Kombination von 2 Textfeldern und und einer Combobox zusammen.

bis hier funktioniert alles.

Nun soll mit und zwischen den einträgen gerechnet werden und das ergebnis in einem neuen frame dargestellt werden.

Bin jetzt schon auf den Trichter gekommen eine eigene Klasse für die werte aus den Textboxen + Combobox zu erstellen, auf welches das Listmodell zurückgreift (um überhaupt an die daten wieder dran zu kommen ohne den Teilstring der Listeneinträge rausziehen zu müssen).

Code:
class Data {
	private String s;
	private double d0;
	private double d1;

	public Data(Object object, String s0, String s1) {
		s = String.valueOf(object);
		d0 = Double.parseDouble(s0);
		d1 = Double.parseDouble(s1);
	}

	public String getString() {
		return s;
	}

	public double getD0() {
		return d0;
	}

	public double getD1() {
		return d1;
	}

	public String toString() {
		return s + " " + d0 + " " + d1;
	}
}

Wie kann ich jetzt wiederum in einer eigenen Klasse "rechnung" meinetwegen d0+d1 als neue Double d04 erzeugen und (!) diese in der Hauptklasse per
Code:
textfeldxy.setText("")
anzeigen lassen?

es müssten zwar etwas kompliziertere operationen als + und - am ende sein, und auch noch andere Felder miteinbezogen werden (if, else). aber wenn mir jemand bei der grundsätzlichen vorgehensweise helfen würde wäre das echt klasse.

danke schonmal
 

fossybeer

Mitglied
Hallo!

Du kannst eine Klasse "Rechnung" anlegen. Diese hat z.B. das Attribut
Code:
public double d4;
und den Konstruktor
Code:
public Rechnung(double d0, double d1)
{
this.d4 = d0+d1;
}
In der Hauptklasse kannst du dann ein neues Objekt anlegen und d4 abfragen:
Code:
Rechnung r = new Rechnung(d0,d1);
double ergebnis = r.d4;
Oder kürzer:
Code:
double ergebnis = (new Rechnung(d0,d1)).d4;
Ist es das, was du wolltest?

Grüße,

Alex
 

Michael8784

Grünschnabel
ja super, danke genau das meinte ich. ich wusste halt nicht ob ich immer ein neues objekt erstellen muss, welches sich aus den objekten der anderen klassen definiert. danke.

darf ich dir (oder wer sonst noch eine lösung weiß) noch eine frage stellen? :-D


und zwar frage ich mich wie ich die referenz zum listenplatz behalten kann
-->

Liste:

abc 0,533 0,753
def 0,853 0,847


hier ist ja klar das "def" der zweite eintrag ist. nun möchte ich aber bei der rechnung zwischen den einträgen diffenzieren bzw. die ergebnisse seperat den einzelnen einträgen zuweisen.

quasi:

ergebnis abc = 0,533*0,753 = ..
ergebnis def = 0,853*0,847 = .
.

weiß jemand antwort?
 

Michael8784

Grünschnabel
hab die sachen versucht umzusetzen, aber irgendwie wird stets "0.0" angezeigt, kriegt also die werte nicht wirklich. habe hier mal ein stückchen code:

Klasse data wie oben

Klasse Rechnung:
Code:
class Rechnung{

	public static double d4;
	
	public Rechnung(String titel, int d1, int d0) {
		super(titel);
	
Rechnung.d4 = d0+d1;
	}
}

Hauptklasse (auszug):


Code:
double ergebnis = Rechnung.d4;
String s30 = String.valueOf(ergebnis);

Konstruktor:

t6.setText("Listeneintrag:  "+s30);
 

zeja

Erfahrenes Mitglied
fossybeer hat dir doch korrekt gezeigt wie das geht. Bitte halte dich da doch dran. Konkret heißt das: Nimm auf jeden Fall das static und benutz es nicht wieder solang du nicht genau weißt was es denn bedeutet.
 

Michael8784

Grünschnabel
ja, das habe ich ja auch getan, nur hat mir eclipse dann immer einen fehler rausgeworfen und mir vorgeschlagen das so umzuwandeln wie es jetzt ist.
 

zeja

Erfahrenes Mitglied
Achte bitte auf deine Groß-/Kleinschreibung!

Wenn eclipse dir das so vorgeschlagen hat, dann hast du offenbar ein new vergessen. Das Ergebnis kannst du nur auf dem Objekt abrufen.