Vector<Point> als Rückgabewert

Status
Nicht offen für weitere Antworten.

Bueko

Mitglied
Hallo Ihr Lieben,

ich habe eine Methode geschrieben, die Klicks speichern soll und mir dann ausgeben. Leider wird mir immer nur der letzte Klick x-mal ausgeben. Was mache ich falsch? Und des weiteren möchte ich noch wissen wie ich die Ausgabe "schöner" machen kann, z. B. zeile 2 / spalte 4?

Code:
public Vector<Point> getStatistikKoordinaten() {
		for(int i = 0; i < versuche; versuche--) {
			koordinaten.add(i, new Point(zeile+1, spalte+1));
			Point p = koordinaten.elementAt(i);	
			p.getX();
			p.getY();
		}
		return koordinaten;
	}

Danke für Eure Hilfe.
 
Die Zeilen sollen gar nichts tun... dies ist nur ein Ausgabebeispiel, da meine Ausgabe bis jetzt so aussieht: [java.awt.Point[x=2,y=4]]

Die "zeile" bzw. "spalte" ist ein String.
Die 2 = p.getX();
Die 4 = p.getY();

Ich hoffe, ich habe deine Frage richtig gedeutet?!
 
Bueko hat gesagt.:
Leider wird mir immer nur der letzte Klick x-mal ausgeben.
Du kommst dem Problem schneller auf die Spur, wenn du mal den kompletten Inhalt deines Vectors auf der Konsole ausgeben lässt. Wahrscheinlich haben alle Objekte den gleichen Wert. 😉
Wenn das so ist, gucken wir mal, woran das liegt. Aber erst mal soweit...
 
So sieht der Inhalt meines Vectors aus:

Code:
[java.awt.Point[x=3,y=3], java.awt.Point[x=3,y=3], java.awt.Point[x=3,y=3]]

... und sie haben alle den gleichen Wert.
 
Dachte ich mir... :wink:
Fällt dir was an dieser Zeile auf?
Code:
Point p = koordinaten.elementAt(i);

Guck dir dazu auch mal deinen Schleifen-Kopf an.
 
Sorry, aber ich habe leider keine Ahnung, was mir auffallen sollte. Ich stehe so dermaßen auf dem Schlauch. :?
In der for-Schleife könnte ich noch die Größe des Vectors einbauen.
 
versuch's so:
Code:
for(int i = 0; i < versuche; versuche--, i++) {
 
anstatt von
Code:
koordinaten.add(i, new Point(zeile+1, spalte+1));
machs so
Code:
koordinaten.add(new Point(zeile+1, spalte+1));
dann wird dein Point immer am Ende eingefügt
 
Sorry, da habe ich mich etwas undeutlich ausgedrückt.

Die Variablen "zeile" und "spalte" sind int-Werte.
Die Point(int zeile, int spalte)-Methode speichert die Zeilen- und Spaltennummern die angeklickt wurden und sämtliche Klicks sollen auf der Console ausgegeben werden.
 
andre111 hat gesagt.:
anstatt von
Code:
koordinaten.add(i, new Point(zeile+1, spalte+1));
machs so
Code:
koordinaten.add(new Point(zeile+1, spalte+1));
dann wird dein Point immer am Ende eingefügt

Leider wird wieder nur der letzte Wert x-mal ausgegeben.
 
Du nimmst auf jeden Fall erst mal den for-Schleifen-Kopf von Ebenius.
Das meinte ich oben.

Du fügst zwar jedes mal neue Points in den Vector, aber du übergibst mit zeile+1 und spalte+1 immer die Werte an den neuen Point aus zeile+1 und spalte+1...
Dämmert's nun?
 
Sorry, aber ich weiß es einfach nicht.
Ich bin mittlerweile sowas von blind, was diese Thematik angeht...
 
Gut, dann schlaf noch mal drüber, lies dann die Beiträge noch mal ganz genau und dann wirst du schon merken, wo der Fehler steckt. 🙂
 
Leider schlafe ich da schon mehr als eine Nacht drüber und finde die Lösung nicht.

OK, ich habe verstanden... Dadurch, dass ich immer den gleichen Wert übergebe, bekomme ich auch immer das gleiche Ergebnis. Aber die Variablen "zeile" und "spalte" beinhalten die Werte, die ich im Vector haben möchte.
 
Das schon, aber du legst quasi immer die gleichen Werte in den neuen Point...
Wenn du die Zeilen und Spalten ausliest, solltest du, um die Werte verschiedener Zeilen/Spalten zu erhalten, auch deren Indizes verändern.

Bsp.:
Code:
koordinaten.add(new Point(zeile++, spalte+1));
Und das natürlich nur so lange wie es noch weitere Spalten/Zeilen gibt.
Jetzt machst du noch mal eine Komplettausgabe deines Vectors.
Und? Wie sieht's aus?
 
So sieht jetzt meine Methode aus:

Code:
public Vector<Point> getStatistikKoordinaten() {
		Vector<Point> koordinaten = new Vector<Point>();
		for(int i = 0; i < versuche; i++) {	
			koordinaten.add(new Point(zeile++, spalte+1));
	    	Point p = koordinaten.elementAt(i);   
	    	p.getY();
	    	p.getX();
	     }
	    return koordinaten;
	}

und so die Ausgabe:

Code:
[java.awt.Point[x=4,y=5], java.awt.Point[x=5,y=5]]

Die Ausgabe sollte jedoch so aussehen:
Code:
[java.awt.Point[x=1,y=1], java.awt.Point[x=5,y=5]]
 
Den o. g. Thread habe ich geschrieben.
Sorry, hatte gedacht ich bin noch eingeloggt.

Danke für die Unterstützung. 🙂
 
Mit dem bisher geposteten Code ist es nicht möglich, alle Fehlerqellen zu betrachten.
Daher kann ich dir erst mal nur raten, an markanten Stellen im Code Prüfungen (println()-Methode) einzufügen, die dir den aktuellen Zustand des Vectors und zeilen/spalten ausgeben.
 
Danke für Eure Tipps... Ich werde mir den Code noch mal in Ruhe anschauen und Euch dann eine Rückmeldung geben.
 
Hallöchen,

habe das Problem gelöst... Den Vector habe ich innerhalb der Klasse deklariert und initialisiert, in einer weiteren Methode wird dem Vector ein neues Point-Element hinzugefügt und in der o. g. Methode wird der Vector mit einer String-Verkettung ausgelesen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben