Probleme bei Liniendiagramm

321

Grünschnabel
Hi Leute! :)

Hab ein Prog geschrieben, wo eingegebene statistische Werte in einer ArrayList gespeichert werden. Es werden MinWert, MaxWert, arithmetisches Mittel, Standardabweichung und Median berechnet und optisch visualisiert.

1. Frage:

Die Darstellung mittels Balkendiagramm funktioniert einwandfrei- jedoch klappt das mit dem Liniendiagramm nicht ganz und die Linien gehen wild kreuz und quer über den Bildschirm... :-(

Code:
.
.
.

	protected void paintComponent(Graphics g)
	{
		frameHöhe = this.getHeight();
		frameBreite = this.getWidth();
		
		anzahlWerte = sammlung.gibAnzWerte();
		linienAbstand = frameBreite / anzahlWerte - 1;
		
		double max = sammlung.gibMaxWert();
		maxWert = max + max / 2;

		skalierung = frameHöhe / maxWert;
	
		super.paintComponent(g);
		
		for(int i = 0; i < sammlung.gibAnzWerte(); i++)
		{
			g.setColor(Color.BLUE);
			
			ArrayList<Double> datenSamml = sammlung.gibDaten();
			
			double wertDouble1 = datenSamml.get(i);
			double wertDouble2 = 0;
			
			if(i < datenSamml.size() - 1) {
				wertDouble2 += datenSamml.get(i+1);
			}
			
			linienAnfang = 0d;
			linienEnde = linienAnfang + linienAbstand;
			
			linienHöhe1 = wertDouble1 * skalierung;
			linienHöhe2 = wertDouble2 * skalierung;
			
			
			g.drawLine((int) linienAnfang, frameHöhe - (int) linienHöhe1 - 10,
					(int) linienEnde, frameHöhe - (int) linienHöhe2 - 10);
			
			linienAnfang = linienEnde;
		}
	}

.
.
.

2. Frage:

Bei der Berechnung des Medians kopiere ich mir die "ArrayList", sortiere dann die Kopie mit "Collections.sort(ArrayList sammlungKopie)", berechne mir dann den Median und gebe den Wert mit "return" aus.

Mein Problem:

Bei der Anzeige des Balkendiagramms werden die Werte bei jeder neuen Eingabe neu aufsteigend sortiert angezeigt.
Ich will sie jedoch in der Reihenfolge, in der sie eingegeben wurden darstellen, nicht jedesmal neu sortiert!? :confused:

Hat irgendwer von euch einen Plan, woran das liegen könnte?

-----------------------------------------------------------------------------------------------------------------------

thx && greets, David
 
Okay- die 2. Frage hätt sich nun erübrigt. Jedoch finde ich den Fehler im Liniendiagramm noch immer nicht!?

greets, David
 
Huhu,

also ohne jetzt ganz zu verstehen, was du da machst, aber folgende zwei Zeilen sehen nach einem Fehler aus:

linienAnfang = 0d; // Du initialisierst auf 0

linienAnfang = linienEnde; // setzt dann auf Linienende

.. nächste Schleife:

linienAnfang = 0d; // und initialisierst wieder?

Gruß Stefan
 
Zurück