Vector wird überschrieben

Status
Nicht offen für weitere Antworten.

Kapitän

Bekanntes Mitglied
hallo,

ich habe hier zwei Klassen, die einen Vector erstellen sollen.
Mein Problem ist nur, dass alle Vectorelemente den gleichen Inhalt haben.
Es wird irgendwie alles überschrieben.

Ich hoffe jmd kann den Fehler finden.

Code:
import java.io.*;
import java.util.*;
import java.util.regex.*;

public class Funktion {

	private static int index = 0;
	static EdgeData ed = new EdgeData(null, 0, 0, 0, 0);
	static Vector<EdgeData> vec = new Vector<EdgeData>();
	
	public static void createVec(String filename){
		
		String[] vertex = { null, null};
		int c = 0;
		int f = 0;
//		int revIndex = 0;
		
		try{
			FileInputStream fis = new FileInputStream(filename);
			InputStreamReader isr = new InputStreamReader(fis);
			BufferedReader bufr = new BufferedReader(isr);
			
			String sLine = bufr.readLine();
			
			while(sLine != null){
				
//				sLine.trim();
				
				String pattern = "(.*)\\-\\>(.*)\\[label\\=\\\"(.*)\\\"\\];";
				Pattern p = Pattern.compile(pattern);
				Matcher m = p.matcher(sLine);
				
				if(m.matches()){
					vertex[0] = m.group(1).trim();
					vertex[1] = m.group(2).trim();
					c = Integer.parseInt(m.group(3).trim());

					ed.setC(c);
					ed.setF(f);
					ed.setIndex(index);
					ed.setVertex(vertex);
					vec.add(ed);
//			-------------test-----------------------
                                                System.out.println("--- "+index+" ----");
			System.out.println("index at index: "+vec.elementAt(index).getIndex());
			System.out.println("index at [0]: "+vec.elementAt(0).getIndex());
			System.out.println("vertex[0] at index: "+vec.elementAt(index).getVertex()[0]);
			System.out.println("vertex[0] at [0]: "+vec.elementAt(0).getVertex()[0]);
			System.out.println();
//			--------------------------------------
//					index points at the index the vector element is located at
					index++;
				}
				sLine = bufr.readLine();
			}
			bufr.close();
		}
		catch(IOException eIO){
			System.out.println("file is empty!"+eIO);
		}
	}
	

public static void main(String[] args){

	createVec("Test.txt");
	}
}


Code:
public class EdgeData {

	private int c; // capacity
	private int f; // flow "at the moment"
	private int revIndex; // points at where the reverse edge is located in a vector
	private int index; // points at where the edge is located in a vector
	private String[]  vertex = new String[1]; // saves the vertex'
	
	public EdgeData(String[] vertex, int c, int f, int revIndex, int index){
		
		this.c = c;
		this.f = f;
		this.revIndex = revIndex;
		this.index = index;
		this.vertex = vertex;
	}
	
	public int getC(){
		return c;	
	}
	public int getF(){
		return f;
	}
	public int getRevIndex(){
		return revIndex;
	}
	public int getIndex(){
		return index;
	}
	public String[] getVertex(){
		return vertex;
	}
	public void setC(int c){
		this.c = c;
	}
	public void setF(int f){
		this.f = f;
	}
	public void setRevIndex(int revIndex){
		this.revIndex = revIndex;
	}
	public void setIndex(int index){
		this.index = index;
	}
	public void setVertex(String[] vertex){
		this.vertex = vertex;
	}
}


Code:
----------KONSOLE-----------------

--- 0 ----
index at index: 0
index at [0]: 0
vertex[0] at index: A
vertex[0] at [0]: A

--- 1 ----
index at index: 1
index at [0]: 1
vertex[0] at index: A
vertex[0] at [0]: A

--- 2 ----
index at index: 2
index at [0]: 2
vertex[0] at index: B
vertex[0] at [0]: B

--- 3 ----
index at index: 3
index at [0]: 3
vertex[0] at index: B
vertex[0] at [0]: B

--- 4 ----
index at index: 4
index at [0]: 4
vertex[0] at index: C
vertex[0] at [0]: C

--- 5 ----
index at index: 5
index at [0]: 5
vertex[0] at index: C
vertex[0] at [0]: C

--- 6 ----
index at index: 6
index at [0]: 6
vertex[0] at index: D
vertex[0] at [0]: D

--- 7 ----
index at index: 7
index at [0]: 7
vertex[0] at index: E
vertex[0] at [0]: E


Code:
---------Test.txt---------------


digraph {
A -> B [label="75"];
A -> C [label="65"];
B -> D [label="70"];
B -> E [label="57"];
C -> D [label="62"];
C -> E [label="70"];
D -> F [label="67"];
E -> F [label="80"];
}
 
B

Beni

Gast
Mein Problem ist nur, dass alle Vectorelemente den gleichen Inhalt haben.
Du hast ja auch nur ein Vectorelement... :wink:

Bitte
- lerne was "static" ist, und missbrauche es nicht, versuch einfach mal ohne "static" zu programmieren
- lerne was "new" macht, und benutze es
- lerne was eine Referenz ist, und merk dass du dasselbe Element immer wieder veränderst und in den Vector schreibst (das ist die Ursache deines Fehlers).

[Edit]
- lerne wie man einen Debugger benutzt (der von Eclipse ist ganz gut), dann kannst du wesentlich effizienter nach Fehler suchen (den Fehler den du jetzt hast, "leuchtet" in einem Debugger geradezu).
 

Kapitän

Bekanntes Mitglied
Also,

ich mache ein ed. Element, und das hänge ich am Vector an.
Danach verändere ich ed. und hänge es wieder an Vector.

Und der Vector speichert jetzt nur Verweise auf die Klasse EdgeData, die aber nur einmal existiert. Richtig?

Und wie erstelle ich jetzt beliebig viele EdgeData Klassen?
Mit new? Damit kann ich um ehrlich zu sein nichts mit anfangen...
 
B

Beni

Gast
Du benötigst keine neuen "Klassen", du benötigst neue "Objekte". (Klasse = Bauplan, Objekt = was die Machine ausspuckt).

Und dann machst du sowas wie:
Code:
            if(m.matches()){

               // neues Objekt erstellen
               EdgeData ed = new EdgeData();


               vertex[0] = m.group(1).trim();
               vertex[1] = m.group(2).trim();
               c = Integer.parseInt(m.group(3).trim());

               ed.setC(c);
               ed.setF(f);
               ed.setIndex(index);
               ed.setVertex(vertex);
               vec.add(ed);
 

Kapitän

Bekanntes Mitglied
das habe ich - nach deinem Hinweis - schon probiert:

the constructor EdgeData is undefined.

Ich kann höchstens den constructor gleich füllen
EdgeData ed = new EdgeData(vertex, c, f...);

Aber ist das so'ne elegante Lösung?
 
B

Beni

Gast
Entweder einen neuen Konstruktor schreiben, oder gleich füllen. Gleich füllen ist nicht unelegant.
Unelegant wird es nur, wenn du irgendwelche Methodenaufrufe 5 mal ineinander schachtelst und selbst nicht mehr verstehst was du schreibst.

P.S. Dieser "vertex"-String-Array wird ähnliche Probleme verursachen :wink:
 

Kapitän

Bekanntes Mitglied
hey....vertex[] macht mir echt Probleme. ???:L

Warum denn das schon wieder?
Ist doch einfach etwas, das ich in EdgeData speichere und dann abrufe.

Aber anscheinend überschreibt der schon wieder alles und liefert nur den letzten Wert von vertex. :(
 
B

Beni

Gast
Weil du jedesmal denselben Array benutzt... neuen Array anlegen!

(Arrays sind auch Objekte, deshalb ist es dasselbe Problem wie mit dem EdgeData)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Vector wird überschrieben Java Basics - Anfänger-Themen 8
J Erste Schritte Alle möglichen ausgaben von 5 Zahlen als Vector Java Basics - Anfänger-Themen 7
C Werte im Vector in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 14
C Vector-Inhalt in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 6
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
J Reihenfolge im Vector lässt sich nicht drehen Java Basics - Anfänger-Themen 9
M Klassen Gesamt speicherbare Elemente in Vector? Java Basics - Anfänger-Themen 3
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
P Objekte in Vector werden überschrieben Java Basics - Anfänger-Themen 4
P Array in Vector speichern Java Basics - Anfänger-Themen 2
E Methoden new Vector().add(x).add(x); ? Java Basics - Anfänger-Themen 5
F Vector istGeordnet Java Basics - Anfänger-Themen 15
R Vector-Filterfunktion Java Basics - Anfänger-Themen 4
Todesbote Map (Key=String; Value = Vector) Value/Vector sortieren Java Basics - Anfänger-Themen 13
J Vector Manipulieren.. Wie? Java Basics - Anfänger-Themen 16
M Vector eines Vectors einzeln ausgeben Java Basics - Anfänger-Themen 9
K String kommt schon in Vector vor? Java Basics - Anfänger-Themen 36
J Erzeugung eines Vector-Objekts - Frage zum Typ Java Basics - Anfänger-Themen 3
H Zugriff auf Vector Element Java Basics - Anfänger-Themen 2
C Vector erzeugt neue Indizes nach Input Java Basics - Anfänger-Themen 2
A Author in Vector Java Basics - Anfänger-Themen 22
M Vector überschreibt Elemente bei add()-Methode Java Basics - Anfänger-Themen 10
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
K Collections Vector zu String casten Java Basics - Anfänger-Themen 4
U Wozu dient ein Vector in Java? Java Basics - Anfänger-Themen 6
S Vector mit beliebigen Klassen an Funktion übergeben Java Basics - Anfänger-Themen 20
B Globale vector? Java Basics - Anfänger-Themen 7
E 2 Dimensionaler Vector Java Basics - Anfänger-Themen 5
T Map<String, Vector>? Java Basics - Anfänger-Themen 11
P Collections Vector füllen in for-Schleife Java Basics - Anfänger-Themen 3
J Vector Addition Java Basics - Anfänger-Themen 5
M 2D Vector Java Basics - Anfänger-Themen 2
N IndexOutOfBoundsException: Source does not fit in dest beim Kopieren von ArrayList in Vector Java Basics - Anfänger-Themen 4
M Umwandlung von Array in Vector und umgekehrt Java Basics - Anfänger-Themen 6
E Datentypen Klasse Vector aus der Standard-API anwenden Java Basics - Anfänger-Themen 7
D Klasse Vector entwerfen Java Basics - Anfänger-Themen 7
A Arrays vs Liste vs Vector Java Basics - Anfänger-Themen 30
H in for Schleife über Vector iterieren Java Basics - Anfänger-Themen 2
S Datentypen Vector auslesen Java Basics - Anfänger-Themen 12
yampi Objektsammlung - Hashtable, Vector, Arrays Java Basics - Anfänger-Themen 8
T Vector-Positin anzeigen Java Basics - Anfänger-Themen 3
C Vector - obsolete collection Java Basics - Anfänger-Themen 1
C Vector<Object> Probleme Java Basics - Anfänger-Themen 38
C Datentypen Probleme mit Vector.contains() Java Basics - Anfänger-Themen 10
M Datentypen function(Vector<SuperClass>), Vector<Subclass> Java Basics - Anfänger-Themen 6
L Vector Sortieren Java Basics - Anfänger-Themen 8
B Vector in Table ersetzen Java Basics - Anfänger-Themen 4
B Werte einer Spalte aus DB in einen Vector schreiben Java Basics - Anfänger-Themen 15
kitz Telefonbuch (Vector) Java Basics - Anfänger-Themen 17
E Arraylist mit Daten aus Vector füllen Java Basics - Anfänger-Themen 7
S Vector -> String JComboBox Java Basics - Anfänger-Themen 11
T Vector sortiern Java Basics - Anfänger-Themen 7
C Frage zu Vector und muliplizieren des Inhaltes Java Basics - Anfänger-Themen 2
S Vector von eigenen Klassen Java Basics - Anfänger-Themen 2
J Collection Vector Java Basics - Anfänger-Themen 8
Streeber ArrayList/Vector, mehrdimensional Java Basics - Anfänger-Themen 11
N Was ist der Unterschied zwischen ArrayList und Vector? Java Basics - Anfänger-Themen 3
babel Einen Vector/Liste mit Daten prüfen Java Basics - Anfänger-Themen 31
B Hilfe zum einem Problem mit Vector Java Basics - Anfänger-Themen 8
H Vector - Fehler? Java Basics - Anfänger-Themen 2
babel einen Vector nach Datum sortieren Java Basics - Anfänger-Themen 21
T Array-Vector Problem Java Basics - Anfänger-Themen 18
P Vector und Exception Java Basics - Anfänger-Themen 7
K Vector Java Basics - Anfänger-Themen 3
K Vector Java Basics - Anfänger-Themen 10
babel ein Vector mit verschiedenen Werten auslesen und berechnen Java Basics - Anfänger-Themen 34
T Object aus Vector übergeben Java Basics - Anfänger-Themen 2
B Vector<Point> als Rückgabewert Java Basics - Anfänger-Themen 23
L Vector einem Array hinzufügen Java Basics - Anfänger-Themen 14
P Vector mit double Java Basics - Anfänger-Themen 3
P Vector Elemente auslesen Java Basics - Anfänger-Themen 9
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
C Unterschied zwischen ArrayList und Vector Java Basics - Anfänger-Themen 2
W Vector mit String[] auslesen Java Basics - Anfänger-Themen 4
Povlsen84 Initlialisierung, Vector, serialVersionUID . kleine Fragen Java Basics - Anfänger-Themen 4
Q Vector verändert trotz final seine Größe Java Basics - Anfänger-Themen 5
B Dopplete aus Vector entfernen Java Basics - Anfänger-Themen 8
E Vector Fehler bei allen Methoden von Vector Java Basics - Anfänger-Themen 2
K Vector zu Array machen Java Basics - Anfänger-Themen 10
1 JList Problem : Synchronisation mit Vector klappt nicht :( Java Basics - Anfänger-Themen 6
L Multidimensional Vector - Recordset Java Basics - Anfänger-Themen 5
K Objektklasse mit leerem Vector füllen Java Basics - Anfänger-Themen 6
G Vector Strijng parsen Java Basics - Anfänger-Themen 6
K vector cannot be resolved Java Basics - Anfänger-Themen 3
G Zeichenkette suchen in Vector-Klasse Java Basics - Anfänger-Themen 11
R fehler beim incrementellen schreiben in einen vector Java Basics - Anfänger-Themen 11
M ObjectInputStream, Object und Vector<Object> Java Basics - Anfänger-Themen 4
G Vector, equal & Casts Java Basics - Anfänger-Themen 5
N Objekte in einen Vector packen oder nicht? Java Basics - Anfänger-Themen 3
D Frage zu Vector Java Basics - Anfänger-Themen 7
S Problem mit Vector Java Basics - Anfänger-Themen 2
G Object[] [] nach vector casten. Java Basics - Anfänger-Themen 3
G 2D vector zugriff auf elementinterne elemente wie Java Basics - Anfänger-Themen 3
G vector in neuem vector sortieren Java Basics - Anfänger-Themen 3
G jede 2te zeile in vector leer einfügen, wie? Java Basics - Anfänger-Themen 4
G vector füllt sich immer weiter. wo muss ich ihn leeren? Java Basics - Anfänger-Themen 3
V Vector/Arraylist hat nur gleiche Einträge Java Basics - Anfänger-Themen 3
G Vector eigenen Typs mit Daten füllen Java Basics - Anfänger-Themen 20
H Vector und Dateien Java Basics - Anfänger-Themen 27

Ähnliche Java Themen

Neue Themen


Oben