Guten Morgen,
ich setze mit sequenzbehaelterCollection.add(j, sequenzbehaelter); Elemente an die Stelle j einer ArrayList. Wenn ich eben eines dieser Elemente dann, z.B. mit System.out.print(sequenzVorrat.get(2).get(0).sequenzfolge[0] ); auslesen will, erhalte ich eine IOOBE. j kann Werte zwischen 2 und 9 annehmen. Ich habe in der Konsolenausgabe alles von get(2)...get(9) ausprobiert, die Exception wird immer geworfen. Die in die ArrayList eingefügten Elemente scheinen irgnedwie völlig anhanden gekommen zu sein. Wenn ich die erste Codezeile durch sequenzbehaelterCollection.add(sequenzbehaelter); und die zweite durch System.out.print(sequenzVorrat.get(...).get(0).sequenzfolge[0] ); ersetze funktioniert dagegen alles wie erwartet. Nur hätte ich die Elemente eben lieber an der von mir intendierten Stelle.
ich setze mit sequenzbehaelterCollection.add(j, sequenzbehaelter); Elemente an die Stelle j einer ArrayList. Wenn ich eben eines dieser Elemente dann, z.B. mit System.out.print(sequenzVorrat.get(2).get(0).sequenzfolge[0] ); auslesen will, erhalte ich eine IOOBE. j kann Werte zwischen 2 und 9 annehmen. Ich habe in der Konsolenausgabe alles von get(2)...get(9) ausprobiert, die Exception wird immer geworfen. Die in die ArrayList eingefügten Elemente scheinen irgnedwie völlig anhanden gekommen zu sein. Wenn ich die erste Codezeile durch sequenzbehaelterCollection.add(sequenzbehaelter); und die zweite durch System.out.print(sequenzVorrat.get(...).get(0).sequenzfolge[0] ); ersetze funktioniert dagegen alles wie erwartet. Nur hätte ich die Elemente eben lieber an der von mir intendierten Stelle.
Java:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
public class Sequenzeinleser {
public Sequenzeinleser() {
}
ArrayList<Sequenzbehaelter> sequenzbehaelterCollection= new ArrayList<Sequenzbehaelter>();
public ArrayList<Sequenzbehaelter> leseSequenzen() throws IOException {
// Indexübersicht:
//ein j für jede Datei (ist gleichzeitig die Sequenzlänge)
//Zeilen gehen über die while-Schleife
// ein i für jede Ziffer einer Zeile
for (int j=2; j<10; j++ ) { //iteriert über alle Dateien mit den versch. Sequenzlaengen
int k=j;
Sequenzbehaelter sequenzbehaelter= new Sequenzbehaelter(j);
FileReader fr = new FileReader("C:/Dokumente und Einstellungen/Ralf/Desktop/Sequenzen/S"+k+ ".txt");
BufferedReader br = new BufferedReader(fr);
String zeile;
while (( zeile = br.readLine()) != null){ //über alle Zeilen einer Datei iterieren bis keine mehr da ist
//System.out.println(zeile);
String[] zahlen = zeile.split("\t");
//System.out.println(zahlen[0]);
Sequenz sequenz = new Sequenz(j);
for (int k1=0; k1<j; k1++){
}
for (int i=0; i<j; i++) { //iteriert über alle Ziffern einer Zeil
sequenz.sequenzfolge[i]=Integer.parseInt(zahlen[i]);
}
sequenzbehaelter.add(sequenz);
//System.out.println(sequenz.sequenzfolge[0]);
sequenzbehaelterCollection.add(j, sequenzbehaelter);
// sequenzbehaelterCollection.add(j-1, sequenzbehaelter);
} // ende der äußersten for-Schleife
}
return sequenzbehaelterCollection;
}
}
Java:
import java.awt.Frame;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.*;
public class WortCorsi {
public static void main(String[] args) throws IOException{
// Window window = new Window();
// window.setVisible(true);
ArrayList<Sequenzbehaelter> sequenzVorrat= new ArrayList<Sequenzbehaelter>();
Sequenzeinleser sequenzeinleser = new Sequenzeinleser();
sequenzVorrat = sequenzeinleser.leseSequenzen();
System.out.print(sequenzVorrat.get(2).get(0).sequenzfolge[0] );
// System.out.println(sequenzVorrat.get(2).get(1).sequenzfolge[1] );
/* System.out.print(sequenzVorrat.get(9).get(1).sequenzfolge[0] );
System.out.println(sequenzVorrat.get(12).get(1).sequenzfolge[1] ); */
//System.out.println(sequenzeinleser.sequenzbehaelterCollection.get(0).get(0).sequenzfolge);
}
}