ich will mein 2DArray bei dem es 1. auf Geschwindigkeit ankommt kopiert und gleichzeit vergrößern.
Weiterhin weiß ich ungefähr die maximale anzahl an Zeilen welche das 2DArray hat nur nicht ganz genau, daher will ich auch kein Vector,ArralyList und dergleichen. Habe gestern ein Buch gesehen im Laden da stand ne gute Lösung drin hatte nur kein fotohandy parat :wink:
if will alle Zeile/spalten aus dem alten tabellendaten 2DArray kopieren in das größere tabellendatenNew das die länge von tabellendaten +100 weitere zeilen hat. Danach referenziere ich mit tabellendaten auf das neue tabellendatenNew 2DArray. Natürlich geht das proggie so nicht ;-) Könnt ihr mir ein paar weitere schritte zeigen, vor allem ist es sinnig wenn die zeile variable 500 mal läuft 500 mal eine if abfrage zu machen ob die zeile gleich die länge der tabellendaten 2DArray ist?
BufferedReader file = new BufferedReader(new InputStreamReader(new FileInputStream(absolutePath)));
String line;
int zeile=0; //2D Array Zeilen
int anzahlToken; //2D Array Spalten
String[][] tabledataOld = new String [tabledataOld.length+100][5];
while((line = file.readLine())!= null )
{
mytokenizer = new StringTokenizer (line,";");
anzahlToken = mytokenizer.countTokens();
for(int i=0; i < anzahlToken; i++)
{
tabledataOld [zeile][i] = mytokenizer.nextToken().trim(); //trim() entfernt leerzeichen vor und nach dem string
}
zeile++;
if(zeile == tabledataOld.length)
{
System.arraycopy(tabledataOld,0,tabledataNew,0,tabledataOld.length);
tabledataOld = tabledataNew;
}
}
das tabledataOld 2D array wurde zuerst mit 700 tabellenzeilen initialisiert. Lade ich nun eine datei mit 800 zeilen in mein Programm funktioniert das arraycopy irgendwie. Hat meine Datei aber 801 zeilen, bekomme ich ArrayIndexoutofBoundsException. Die Augabe muss so gelöst werden da arraycopy teil der Augabe ist.
> Lade ich nun eine datei mit 800 zeilen in mein Programm funktioniert das arraycopy irgendwie. Hat meine Datei aber 801 zeilen, bekomme ich ArrayIndexoutofBoundsException.
vergrößere das Array um 101 statt 100?!
benutzte eine ArrayList und am Ende toArray(), wenn du die Größe nicht vorher weißt
> Lade ich nun eine datei mit 800 zeilen in mein Programm funktioniert das arraycopy irgendwie. Hat meine Datei aber 801 zeilen, bekomme ich ArrayIndexoutofBoundsException.
vergrößere das Array um 101 statt 100?!
benutzte eine ArrayList und am Ende toArray(), wenn du die Größe nicht vorher weißt
Die Frage wie es funktioniert? Wenn ich um 101 erhöhe kommt wieder ein fehler sobald es 102 zeilen mehr sind...
Irgendwas stimmt mit meinem code nicht dass es 1x geht aber nicht ein 2.mal.
UND warum wird auf Foren immer versucht (nicht nur hier) die Meinung einem anderen aufzudrücken anstatt auf sein Problem einzugehen. Ich weiß schon dass ich arraylist etc nehmen könnte. Die Aufgabe soll aber mit arracopy gelöst werden.
> UND warum wird auf Foren immer versucht (nicht nur hier) die Meinung einem anderen aufzudrücken anstatt auf sein Problem einzugehen.
das ist ganz einfach, du erzählst nämlich nicht, was dein Problem ist,
auch 'Die Frage wie es funktioniert?' hilft nicht, so dass man hier immer noch am Anfang steht:
was ist eigentlich die Frage?
alle anderen Tipps wie ArrayList sind pures Raten, was du eigentlich willst,
aber das sollte man bei dir wohl nicht tun
hugo,
arrays sind in java nicht dynamisch. nehm dir marcos rat zu herzen und lös es über arraylists. auch wenn java einen garbage collector hast, musst trotzdem nicht tausende arrays erstellen..