Hallo liebes Forum,
ich möchte mehrere ArrayLists erzeugen und mit diesen arbeiten. Dies klappt mit dem einen sehr gut (segmente) aber mit dem zweiten, den ich genau so erstelle, klappt das Ganze nicht (rechtecke). Es ist immer nur ein "rechteck" in der Liste. Ich bin für jede Hilfe sehr dankbar.
Hier der Code:
ich möchte mehrere ArrayLists erzeugen und mit diesen arbeiten. Dies klappt mit dem einen sehr gut (segmente) aber mit dem zweiten, den ich genau so erstelle, klappt das Ganze nicht (rechtecke). Es ist immer nur ein "rechteck" in der Liste. Ich bin für jede Hilfe sehr dankbar.
Hier der Code:
Java:
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Ueberschneidung{
static int anzrechteck = 0;
static Punkt punkt = null;
static Xfigpolyline pl = new Xfigpolyline();
static Segment segment = null;
public static int anz;
static int anzZeile = 0;
static Rechteck rechteck = null;
public static void main(String[] args) throws IOException {
// lese Datei
BufferedReader in = new BufferedReader(new FileReader(
".."));
// lese Zeile
String zeile = in.readLine();
// solange Zeilen vorhanden sind
while (zeile != null) {
// überprüfe ob Polyline
if (zeile.startsWith("2")) {
zeile = in.readLine();
anzZeile++;
StringTokenizer st = new StringTokenizer(zeile);
anz = st.countTokens() / 2;
for (int i = 0; st.hasMoreTokens(); i++) {
// x- und y-Koordinate zuweisen
punkt = new Punkt(Integer.parseInt(st.nextToken()),
Integer.parseInt(st.nextToken()));
System.out.println("Punkt: " + punkt);
pl.punktDazu(punkt);
}
ArrayList<Rechteck> rechtecke = new ArrayList<Rechteck>();
ArrayList<Segment> segmente = new ArrayList<Segment>();
for (int i = 0; i < pl.polyline.size()-1; i++) {
segment = new Segment(pl.polyline.get(i),
pl.polyline.get(i + 1));
System.out.println(segment + "Segment" + i);
if (segment.istSenkrecht()) {
System.out.println("Segment ist senkrecht");
}
segmente.add(segment);
if ((segmente.size() == 4)
&& (segmente.get(0).p1.y == segmente.get(3).p2.y)
&& (segmente.get(0).p1.x == segmente.get(3).p2.x)) {
rechteck = new Rechteck(segmente.get(0),
segmente.get(1), segmente.get(2),
segmente.get(3));
anzrechteck++;
}
}
rechtecke.add(rechteck);
//Bbox
if ((segmente.size() == 3)
&& (segmente.get(0).p1.y == segmente.get(2).p2.y)
&& (segmente.get(0).p1.x == segmente.get(2).p2.x)) {
Bbox b1 = new Bbox(segmente.get(0).p2, segmente.get(2).p1);
b1.zuRechteck();
System.out.println(b1.zuRechteck());
}
if ((segmente.size() == 4)
&& !((segmente.get(0).p1.y == segmente.get(3).p2.y) && (segmente
.get(0).p1.x == segmente.get(3).p2.x))) {
for (int k = 0; k < rechtecke.size(); k++) {
System.out
.println(segmente.get(k).schneidetRechteck(
rechtecke.get(k)));
}
}
else if (segmente.size() < 4 | segmente.size() > 4) {
for (int k = 0; k < rechtecke.size(); k++) {
System.out.println(segmente.get(0).schneidetRechteck(
rechtecke.get(0)));
}
} else {
System.out.println("?");
}
pl.polyline.clear();
}
zeile = in.readLine();
}
System.out.println();
}
}