Hi Leute!
bin noch relativ unerfahren mit Java und muss nun für die Uni ein Programm schreiben, welches unter anderem eine Textfile ließt, in welchem Punktdaten drinstehen.
Leider stehen die Koordinaten der Punkte nicht geordnet, also x1, y1, x2, y2,... etc.
Alle X-Koordinaten fangen mit der Zahl 3 an, die Y-Koordinaten fangen mit 5 an, deshalb
habe ich für X- und Y-Koordinaten jeweils eine eigene ArrayList gemacht.
Die supportXList wird auch richtig gefüllt, die supportYList jedoch nicht.
Wahrscheinlich ein sehr dummer Fehler, aber ich bin noch nicht so der Schleifen und Arrayexperte...
Bekomme eine OutOfBoundsException an der rot-markierten Stelle.
Kann mir jemand einen Tipp geben?
bin noch relativ unerfahren mit Java und muss nun für die Uni ein Programm schreiben, welches unter anderem eine Textfile ließt, in welchem Punktdaten drinstehen.
Leider stehen die Koordinaten der Punkte nicht geordnet, also x1, y1, x2, y2,... etc.
Alle X-Koordinaten fangen mit der Zahl 3 an, die Y-Koordinaten fangen mit 5 an, deshalb
habe ich für X- und Y-Koordinaten jeweils eine eigene ArrayList gemacht.
Die supportXList wird auch richtig gefüllt, die supportYList jedoch nicht.
Wahrscheinlich ein sehr dummer Fehler, aber ich bin noch nicht so der Schleifen und Arrayexperte...
Bekomme eine OutOfBoundsException an der rot-markierten Stelle.
Kann mir jemand einen Tipp geben?
Code:
(Text einlesen aus der Datei...)
// splitten Anfang
StringTokenizer st = new StringTokenizer(text);
// die support list supportxlist speichert alle x werte, die supportylist speichert alle y werte
List<Double> supportXList = new ArrayList<Double>();
List<Double> supportYList = new ArrayList<Double>();
// füllt die support Listen jeweils mit x und y elementen
while(st.hasMoreTokens())
{
for(int i=0; i <= st.countTokens(); i++){
if(st.nextToken().isEmpty()){break;}
else{
String s = st.nextToken();
Double d = Double.valueOf(s);
// wenn der token eine 3 am anfang hat, wird er ins das supportXList array geschrieben
if(s.charAt(0)=='3'){
supportXList.add(d);
// System.out.println(supportXList.toString());
// System.out.println(supportXList.size());
}
// wenn der token eine 5 am anfang hat, wird er ins das supportYList array geschrieben
if(s.charAt(0)=='5'){
supportYList.add(d);
System.out.println(supportYList.toString());
System.out.println(supportYList.size());
}
else{}
}
}
}
List<Line> lineList = new ArrayList<Line>();
// füllt die lineList mit punkten aus den support listen
for(int i=0; i<=supportXList.size();i++){
// erst werden die elemente aus der ArrayListe in double geparst
double x1 = supportXList.get(i);
double y1 = supportYList.get(i); // ERROR: OUT OF BOUNDS
double x2 = supportXList.get(i+1);
double y2 = supportYList.get(i+1);
lineList.add(new Line(new Point(x1,y1),new Point(x2,y2)));
}