Vectoren befuellen sich von selbst

Status
Nicht offen für weitere Antworten.

Corcovado

Bekanntes Mitglied
Hallo,
ich haette gute Lust gehabt, das Thema Java und Esotherik zu nennen, aber ich denke, dann kann mir garantiert keiner mehr helfen. Mein Problem ist allerdings alles andere als einfach zu erklaeren.

Das Programm:
Ich will mit einem BufferedReader und dessen Methode getLine() eine Datei zeilenweise einlesen.
Die Zeilen bestehen aus per ';' getrennten Zahlen.
in einer while-Schleife soll dann jede Zahl als ein Vectorelement in den Vector vecLine geschrieben werden.

Code:
szInputLine = ist ein string der die Zeile enthaelt.
myTexToo = ist eine Klasse, die wiederum ueber Vektoren verfuegt und diese per getter und setter verwalten sollte, was das Problem ist.
Wirklich wichtig sind nur die zwei markierten Stellen mit vecLine und dem setter von vecColNames, den Rest habe ich eher so noch da gelassen.

Code:
...
    public void getFile(String szFilename){

	System.out.println("getFile");		

	// streams		
	BufferedReader brInput = null;

	// containers
	Vector vecLine = new Vector(0);
	String szInputLine = "", szToken = ";", szTemp = "";

	// variables
	int iFirstLines = 0;
	boolean bWrite = false;
 
	// initialisation
	try{
	    brInput = loadBufferedReader(szFilename);
	
	    while ((szInputLine = brInput.readLine()) != null){

		szTemp = "";	   
		szInputLine += szToken;
		vecLine.removeAllElements();


		//******* read the line: *******

		while(szInputLine.length() > 0){

		    if(szInputLine.startsWith(szToken)){

//// hier passiert es:
			vecLine.addElement(szTemp);
/////
			szTemp = "";
			
		    }else{
			szTemp += String.valueOf(szInputLine.charAt(0));
		    }
		    szInputLine = szInputLine.substring(1);
		}

		
		//******* cut off *******

		try{
		    if(vecLine.size() <= 1){
			// line is empty
			bWrite = false;
			
		    }else if(iFirstLines < 2){
			bWrite = false;

			if(iFirstLines < 1){
			    // line 0: read coloumn names
			    System.out.println("line 0");

			    myTexToo.setColNames(vecLine); 
///// sollte eben nur EINMAL fuer den Vector der 0. Zeile 
//// in den Vector vecColNames der Klasse myTexToo schreibem
			    
			}else{

			    // line 1: read lib sum
			    System.out.println("line 1");

			    // save whole line LibSum
			    myTexToo.setLibSum(vecLine);

			    // parameters: iFirstColumn and iLastColumn
			    myTexToo.findFirstColumn(vecLine);
			    myTexToo.findLastColumn(vecLine);

			    // work with parameters
			    myTexToo.setSmallestLib(vecLine);
			}
			iFirstLines++;

		    }else{

			// line > 1: do data
			System.out.println("line >1");

			bWrite = myTexToo.checkLastColumn(vecLine);

		    }

		}catch(NumberFormatException except1){ 
		    System.out.println("NumberFormatException");
		    bWrite = false;
		    
		}catch(IndexOutOfBoundsException except2){
		    System.out.println("IndexOutOfBoundsException");
		    bWrite = false;
		}  
		    
		
		//******* write *******

		if(bWrite){
		    myTable.addLine(vecLine);
		}
	    }// one more LINE done !!!
	    
	    brInput.close();
	    
	}catch(Exception parseExcept){
	    System.out.println("ERROR :" + parseExcept);
	    parseExcept.printStackTrace();
	}
    }
...


Dazu gehoert die Klasse TextTools mit dem Object myTexToo in der Klasse der obigen Funktion.

Code:
...
    public void setColNames( Vector vecTemp){
	vecColNames = vecTemp;
    }

    public Vector getColNames(){
	return vecColNames;
    }
...



Problem:
vecColNames sollte nur einmal eingelesen werden. Es sollte genau die 0. Zeile sein.
Was passiert ist unglaublich:
vecColNames wird ueber den setter einmal eingelesen und dieser wird nicht mehr im weitern Programm aufgerufen.
Allerdings, aendert sich beim weiteren Einlesen von vecLine, an genau der obigen Stelle auch der Inhalt von myTexToo.vecColName.
Wenn ich vor und nach dieser Zeile den Vector vecColName ausgeben lasse, wird er genau mit demselben befuellt, was in vecLine und zwar nur da reinsollte (davor wird er sogar geleert?!?).
Was ist da los? Ich habe versucht vecColNames umzubenennen, da ich dachte vielleicht gibts ja javaintern nen Doppelgaenger, hat aber nix gebracht. Darf man evtl in einem JavaProgramm nur einen Vector haben?????


Die Hauptfrage:
Warum befuellt sich vecColName, wenn vecLine gefuellt wird?

Ist dieses Verhalten normal? ich habe versucht mit static rumzumache, hat alles nix gebracht...
 
B

Beni

Gast
Wie du zu einer Web-Site Links von verschiedenen anderen Web-Sites haben kannst, können auch mehrere Variablen auf dasselbe Objekt zeigen.

Mit dem "="-Operator setzt du nur den Zeiger neu, du kopierst nichts oder so...

Wenn du mehr als einen Vektor haben willst, musst du für jeden Vektor "new Vector(..)" aufrufen.
 

Corcovado

Bekanntes Mitglied
Danke - Ich bin auch gerade drauf gekommen, dass es wohl so ein pass-by-reference Problem ist, wie kann ich in Java explizit by-value einen vector kopieren?

...weil ich uebergebe vecLine an vecColNames per '=', aber habe davor schon fuer beide ein eigenes new benutzt, also vermute ich das es ein uebergabeproblem ist. Ich dachte Objecte der Container werden immer per default by-value gepasst ?!

Also wie mache ich pass-by value

Edit:
habs auch grad gefunden - nach einer kleinen Pause...

Code:
    public void setColNames( Vector vecTemp){
	vecColNames = (Vector) vecTemp.clone();
    }

das macht dem Spuk ein Ende. Ich sollte oeffters Pausen machen und sinnlose Threads schreiben, das hilft - danke trotzdem an alle die sich den Kopf zerbrochen haben ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Vectoren bearbeiten: ConcurrentModificationException Allgemeine Java-Themen 4
S Doppelte Werte in Listen,Vectoren etc suchen Allgemeine Java-Themen 2
G Kleine Frage zu Vectoren Allgemeine Java-Themen 2
W n Vectoren mit Vectoren füllen Allgemeine Java-Themen 11
P Array von Vectoren + Generics Allgemeine Java-Themen 6
G Vectoren Threads, und Multi Operationen Allgemeine Java-Themen 15
N warning bei Vectoren Allgemeine Java-Themen 15
meez Vectoren vs. "richtige" Arrays Allgemeine Java-Themen 18
E Sortieren von Vectoren Allgemeine Java-Themen 5
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
A Eclipse hängt sich auf Allgemeine Java-Themen 7
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
Viper13125 Eclipse Hängt sich auf, wenn ich SimpelDateFormat drin lasse Allgemeine Java-Themen 2
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
C Parsen einer sich updatenden Html mithilfe von jsoup Allgemeine Java-Themen 4
Kiki01 Häufigster Buchstabe lässt sich nicht ermitteln Allgemeine Java-Themen 30
Tobero Wie berechnet man ob zwei Linien sich schneiden? Allgemeine Java-Themen 2
T Projekt baut nicht mehr/lässt sich nicht mehr ausführen Allgemeine Java-Themen 6
Tobero Wie bekomme ich in welchem Quadrat sich eine Position in einem Grid befindet Allgemeine Java-Themen 11
O Jar lässt sich auf bestimmten Pc nicht starten Allgemeine Java-Themen 18
D Anfänger versucht sich an Xtext Allgemeine Java-Themen 0
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
P JavaFX Anwendung beendet sich selbst nur als Jar Allgemeine Java-Themen 40
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
A 2D-Grafik Einfachster Ansatz, um sich wiederholende Figur in einem 2D-Image zu erkennen Allgemeine Java-Themen 1
M String lässt sich nicht Zusammenfügen Allgemeine Java-Themen 10
I Lohnt sich heutzutage der Aufwand einer Portierung für MacOS Allgemeine Java-Themen 8
G Jar lässt sich mit macOS nicht starten Allgemeine Java-Themen 9
H Erste Schritte Ausführbare Dateien lassen sich nicht starten Allgemeine Java-Themen 5
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
K OOP Daten addieren sich bei GUI-Eingabe Allgemeine Java-Themen 10
K ursprüngliche ArrayList ändert sich bei Übergabe in Methode Allgemeine Java-Themen 18
N Quicksort Programm hängt sich auf Allgemeine Java-Themen 6
S Compiler-Fehler Programm verhält sich in Eclipse anders Allgemeine Java-Themen 1
G Beendet sich der Thread selbst?! Allgemeine Java-Themen 3
S Compiler-Fehler IntelliJ Projektdatei lässt sich nicht erstellen. Allgemeine Java-Themen 15
J Bilder lassen sich nicht importieren Allgemeine Java-Themen 3
E GUI.jfm lässt sich nicht mehr öffnen Allgemeine Java-Themen 1
H Kennt sich jemand mit Eclipse und dem Thema Jar-File aus ? Allgemeine Java-Themen 6
S Programm hängt sich manchmal (selten) auf Allgemeine Java-Themen 9
D System.arraycopy verhält sich seltsam Allgemeine Java-Themen 1
C Threads Methode verhält sich merkwürdig Allgemeine Java-Themen 18
D Best Practice Gesamten Bildschirminhalt auslesen und Email schicken sobald kein Pixel sich ändert Allgemeine Java-Themen 11
K jar-Datei lässt sich unter Windows nicht verwenden Allgemeine Java-Themen 3
X Sich wiederholende substrings finden Allgemeine Java-Themen 6
P Input/Output Inputstream verhält sich verschieden Allgemeine Java-Themen 9
T Minimax/Alphabeta Algorithmus hängt sich auf (?) Allgemeine Java-Themen 2
Tausendsassa Threads Einen Thread sich selbst schließen lassen Allgemeine Java-Themen 17
K Java installiert sich nicht ganz Allgemeine Java-Themen 15
E Anwendung verhält sich unter Mac anders als Unter Windows. Allgemeine Java-Themen 4
L Jar lässt sich nicht öffnen Allgemeine Java-Themen 12
T BufferedImage verändert sich beim Einlsesen Allgemeine Java-Themen 1
Z Eclipse hängt sich alle paar Sekunden auf (Keine Rückmeldung). Allgemeine Java-Themen 4
L Liste führt sich nicht weiter Allgemeine Java-Themen 5
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
F Wert ändert sich nicht Allgemeine Java-Themen 12
T Nach Java Update: Jar Datein öffnen sich nicht mehr mit doppelklick Allgemeine Java-Themen 3
M Programm startet sich selbst neu, alte Logfiles bleiben gesperrt Allgemeine Java-Themen 2
J String Variable verändert sich plötzlich Allgemeine Java-Themen 8
K Java lässt sich nicht Installieren Windows7Ultimate 64Bit Allgemeine Java-Themen 1
F JTable mit Zellen die sich durch andere Eingaben füllen Allgemeine Java-Themen 1
E Liste löscht sich selbstständig Allgemeine Java-Themen 5
I JPanel soll sich dem JFrame anpassen Allgemeine Java-Themen 1
ruutaiokwu datenstruktur welche sich "im kreis" dreht Allgemeine Java-Themen 26
D swingset3.jnlp lässt sich nicht ausführen Allgemeine Java-Themen 2
L Prog läuft in der IDE, hängt sich aber am Mac auf Allgemeine Java-Themen 0
F Spiel lässt sich nicht aus GUI starten Allgemeine Java-Themen 5
B Threads halten sich irgendwie auf... Allgemeine Java-Themen 6
G Services verwenden sich gegenseitig Allgemeine Java-Themen 4
A Auswahl eines JEditorPane das Sich in einem JScrollPanel Befindet Allgemeine Java-Themen 2
J kann eine .jar sich selbst verschieben? Allgemeine Java-Themen 6
M Erkennen, in welcher Methode sich die VM befindet Allgemeine Java-Themen 6
Rudolf In wie fern lohnt sich C++ für einen Javaentwickler Allgemeine Java-Themen 70
A Selbsterstellte 404-Seiten bestimmen, die sich als 200 ausgeben Allgemeine Java-Themen 8
D Arrays überschreiben sich Allgemeine Java-Themen 2
G .jar Dateien lassen sich nicht mehr öffnen Allgemeine Java-Themen 2
D Dialog soll sich beim Klick auf Button schließen Allgemeine Java-Themen 8
pg1337 hashCode() verändert sich Allgemeine Java-Themen 15
N Java lässt sich nicht löschen! Allgemeine Java-Themen 7
Jats Programm mit CMD Befehl hängt sich auf oder gibt error = 5 aus Allgemeine Java-Themen 4
C Prüfen ob sich ein Punkt innerhalb einer Kugel befindet (Java3D,nicht-lineare GLS) Allgemeine Java-Themen 5
D Java Excel API - Schreiben in Excel lässt sich nicht über Makro starten Allgemeine Java-Themen 18
P jar-Datei lässt sich nicht ausführen Allgemeine Java-Themen 5
E nach dem Ordner suchen, wo .jar datei sich befindet Allgemeine Java-Themen 17
J Java programm lässt sich in win7 nach linux install nicht mehr ausführen Allgemeine Java-Themen 18
D JMF - lässt sich nicht im ausgewählten Format aufnehmen Allgemeine Java-Themen 2
ruutaiokwu enlosschleife in thread beendet sich Allgemeine Java-Themen 3
F Javainstallation verweigert sich mir Allgemeine Java-Themen 11
M Java lässt sich nicht installieren Allgemeine Java-Themen 10
T Programm hängt sich auf Allgemeine Java-Themen 14
B Berechnung eines sinh abbrechen, wenn 16. Nachkommastelle sich nicht mehr ändert Allgemeine Java-Themen 7
V JRE lässt sich nicht installieren. Allgemeine Java-Themen 10
W 2D-Grafik nach getthumbnail läst sich Quellbild nicht mehr löschen Allgemeine Java-Themen 3
J Eclipse Eclipse hängt sich ständig auf Allgemeine Java-Themen 6
L JDK lässt sich nicht deinstallieren Allgemeine Java-Themen 3
T KeyListener lässt sich nur einmal drücken Allgemeine Java-Themen 2
J Können Programme sich selbst erweitern? Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben