Segment vollständig befüllen

butterfly84

Mitglied
Hallo,

ich habe hier ein Programm, welches Punkt, Segment usw. initialisiert. Ein Segment besteht aus 2 Punkten und ein Punkt aus der x- und y-Koordinate. Nun ist es so, dass das Segment Punkt 1 und 2 dann 3 und 4 bekommt, es soll aber Punkt 1 und 2 dann Punkt 2 und 3 und Punkt 3 und 4 enthalten. Ich weiss nicht, wie ich dass realisieren könnte, ob das überhaupt mit dieser einen for-Schleife geht. Ich bin für jeden Tipp dankbar.

Java:
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.util.ArrayList;

import java.util.StringTokenizer;

public class Point {

	static int anzrechteck = 0;
	static Punkt punkt = null;
	static Xfigpolyline pl = new Xfigpolyline();
	static Bbox b1 = null;
	static Segment segment = null;
	static Segment segment2 = null;
	public static int anz;
	static int anzZeile = 0;
	static Rechteck rechteck = null;
	static Xfigpolyline pl1 = new Xfigpolyline();
	static ArrayList<Rechteck> rechtecke = new ArrayList<Rechteck>();
	static ArrayList<Segment> segmente = new ArrayList<Segment>();

	public static void main(String[] args) throws IOException {

		// lese Datei
		BufferedReader in = new BufferedReader(...));
		// 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()));

					pl.punktDazu(punkt);

				}

				for (int i = 0; i < pl.polyline.size() - 1; i++) {
					if (i < pl.polyline.size() - 1)
						segment = new Segment(pl.polyline.get(i),
								pl.polyline.get(i + 1));

					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)) {

					anzrechteck++;
					rechteck = new Rechteck(segmente.get(0), segmente.get(1),
							segmente.get(2), segmente.get(3));
					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)) {
					Punkt neup1 = new Punkt(segmente.get(0).p1.x,
							segmente.get(0).p2.y);
					Punkt neup2 = new Punkt(segmente.get(2).p1.x,
							segmente.get(2).p2.y);
					b1 = new Bbox(neup1, neup2);
					b1.zuRechteck();
					// System.out.println(b1.zuRechteck() + "Bbox");
					rechtecke.add(b1.zuRechteck());
				}
				// kein Rechteck aber 5 Punkte
				if ((segmente.size() == 4)
						&& ((segmente.get(0).p1.x != segmente.get(3).p2.x) && (segmente
								.get(0).p1.y != segmente.get(3).p2.y))) {

					for (int j = 0; j < segmente.size(); j++) {
						pl1.punktDazu(segmente.get(j).p1);
						pl1.punktDazu(segmente.get(j).p2);
					}

					for (int i = 0; i < rechtecke.size(); i++) {
						System.out
								.println("Überschneidung mit Polyline der Länge 5: "
										+ pl1.schneidetRechteck(rechtecke
												.get(i)));

					}

				}

				else if (segmente.size() != 4) {

					for (int j = 0; j < segmente.size(); j++) {
						for (int i = 0; i < rechtecke.size(); i++) {

							if (segmente.get(j).schneidetRechteck(
									rechtecke.get(i))) {
								System.out.print(segmente.get(j));
								System.out.print(" schneidet");
								System.out.println(rechtecke.get(i));
							}

						}
					}

				} else {
					System.out.println("Keine Überschneidung!");

				}

				pl.polyline.clear();
				segmente.clear();

			}

			// Jede Zeile aus der XFig-Datei
			zeile = in.readLine();

		}
		System.out.println();

	}

}
 
Zuletzt bearbeitet:

AmunRa

Gesperrter Benutzer
könntest du den Code von dir auf das wesentliche reduzieren und also nur auf die For schleife bei der du glaubst, dass Sie fehlerhaft ist.

und am besten ein KSKB


edit1: die if-Abfrage in zeile 52 ist überflüssig, da dies bereits durch die For-schleife gesichert ist.

edit2: meiner Meinung nach macht doch die For-schleife in Zeile 51 genau das was du möchtest.

Es legt im ersten Durchlauf ein Segmen mit den Punkten 0,1 imzweiten durch lauf mit den Punkten 1,2 im dritten mit 2,3 usw.
es sei denn dass die get(int i) methode die du verwendest, den Punkt aus der Polyline methode entfernt. da du aber keinen Code hierzu gepostet hast kann ich das nicht beantworten
Wobei in diesem Fall mein edit1 überflüssig wäre, weil dann die if-Bedingung notwendig wäre.
 
Zuletzt bearbeitet:

butterfly84

Mitglied
Hallo AmunRa,

komischerweise liefert es wieder die richtige Lösung, ich weiss nicht, was ich zwischendurch verändert habe, tut mir also leid, wenn ich Deine Zeit unnötig beansprucht habe.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Tetris-Segment "malen" Java Basics - Anfänger-Themen 7
G 9-Segment-Anzeige Java Basics - Anfänger-Themen 7
E Methoden Action Event wird nicht vollständig ausgeführt Java Basics - Anfänger-Themen 3
L Prüfen ob Fax (Tif-Datei) vollständig angekommen ist Java Basics - Anfänger-Themen 15
X Kann man post increment "vollständig schreiben"? Java Basics - Anfänger-Themen 13
U Prüfung, ob Datei vollständig vorhanden Java Basics - Anfänger-Themen 8
A Datentypen Stringbuilder vollständig leeren Java Basics - Anfänger-Themen 6
C Ausgabe nicht vollständig Java Basics - Anfänger-Themen 6
R GUI vollständig leeren Java Basics - Anfänger-Themen 10
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
hebein Mit Javaprogramm webseiten automatisiert befüllen und ausführen Java Basics - Anfänger-Themen 6
M Arrayliste mit beliebig vielen Namen befüllen Java Basics - Anfänger-Themen 4
H Arrays befüllen Java Basics - Anfänger-Themen 43
M ArrayList mit einer Schleife befüllen Java Basics - Anfänger-Themen 2
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
L Zufälliges 2d array befüllen Java Basics - Anfänger-Themen 27
I Java zweidimensionales array befüllen mit for-schleife Java Basics - Anfänger-Themen 2
V Erste Schritte Eine Array-Variable mit Benutzereingaben befüllen Java Basics - Anfänger-Themen 3
W Erste Schritte Arrays befüllen und ausgeben Java Basics - Anfänger-Themen 11
J Mit for Schleife einen String Rückwärts befüllen Java Basics - Anfänger-Themen 9
H Meine Tabelle befüllen in .fxml Java Basics - Anfänger-Themen 16
E Rekursion Kisten befüllen Java Basics - Anfänger-Themen 10
D Array via Eingabe befüllen Java Basics - Anfänger-Themen 6
S Matrix spaltenweise befüllen Java Basics - Anfänger-Themen 1
A Dreidimensionales Array mit Zufallszahlen befüllen Java Basics - Anfänger-Themen 18
J Klassen HashSet, TreeSet: unregelmäßige Zahlenreihen beim Befüllen Java Basics - Anfänger-Themen 7
B Bild mit Schrift befüllen / Anpassung bei Wortlänge Java Basics - Anfänger-Themen 2
T Methoden HashSet Objekt mit Zufallszahlen befüllen Java Basics - Anfänger-Themen 3
L Methoden Set Methode mit Array befüllen Java Basics - Anfänger-Themen 4
O array mit Methode variabel befüllen Java Basics - Anfänger-Themen 5
T Variablen Array mit Scanner befüllen Java Basics - Anfänger-Themen 6
G Objekt array befüllen und ausgeben Java Basics - Anfänger-Themen 3
J Erste Schritte zweidimensionales Array Muster befüllen. Java Basics - Anfänger-Themen 4
P CSV Datei einlesen und damit ein Datenmodell befüllen Java Basics - Anfänger-Themen 2
N Methoden Interaktives PDF mit HashMap befüllen Java Basics - Anfänger-Themen 0
K Array zufällig befüllen Java Basics - Anfänger-Themen 4
B ArrayList zufällig befüllen Java Basics - Anfänger-Themen 1
J 2 dimensionales Array befüllen Java Basics - Anfänger-Themen 43
M Interpreter-Fehler Kompliziertes Array befüllen Java Basics - Anfänger-Themen 6
M Erste Schritte 2 dimensionales Array eleganter befüllen Java Basics - Anfänger-Themen 2
M JTable mit XML datei befüllen Java Basics - Anfänger-Themen 1
J ComboBox mittels neuer Methode befüllen Java Basics - Anfänger-Themen 3
S Variablen Variable erzeugen und Array mit Variablen befüllen Java Basics - Anfänger-Themen 26
M Methoden Befüllen einer Map Java Basics - Anfänger-Themen 2
S Jfreechart mit LinkedList befüllen Java Basics - Anfänger-Themen 1
S JTable LinkedList <Objekt> befüllen Java Basics - Anfänger-Themen 1
1 ResultSet in Schleife "befüllen" Java Basics - Anfänger-Themen 4
G TextField befüllen Java Basics - Anfänger-Themen 3
M List befüllen Java Basics - Anfänger-Themen 3
T Zeilenweise Excel-Datei mit Strings befüllen Java Basics - Anfänger-Themen 28
P StringArray mit String befüllen Java Basics - Anfänger-Themen 3
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
T Java-Objekt befüllen - Verstädnis Java Basics - Anfänger-Themen 1
C OOP Array mit Zahlen zw. 0 und 9 befüllen Java Basics - Anfänger-Themen 3
H ArrayList mit char- Array befüllen Java Basics - Anfänger-Themen 12
L Array schnell befüllen Java Basics - Anfänger-Themen 3
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
P Datentypen Array mit Daten befüllen Java Basics - Anfänger-Themen 5
T Array mit Strings befüllen Java Basics - Anfänger-Themen 4
Z Feld befüllen Java Basics - Anfänger-Themen 8
O 2D Matrix befüllen mit geraden Zahlen!? Java Basics - Anfänger-Themen 14
J Java Matrix befüllen Java Basics - Anfänger-Themen 5
S Liste mit Buchstabe sortiert befüllen Java Basics - Anfänger-Themen 3
D jTable befüllen mit dynamischem Inhalt Java Basics - Anfänger-Themen 11
H Pseudo-Stack (char[] stackArray) mit Zeichen aus einer .txt-Datei befüllen Java Basics - Anfänger-Themen 5
N JComboBox mit Dateinamen befüllen Java Basics - Anfänger-Themen 7
M Zweidimensionales Array befüllen Java Basics - Anfänger-Themen 4
D Datentypen TreeSet aus einer List<String[]> befüllen Java Basics - Anfänger-Themen 18
J <h:selectOneMenu> befüllen wie ? Java Basics - Anfänger-Themen 2
C Array mit Dualzaheln befüllen Java Basics - Anfänger-Themen 5
R Liste mit neu erzeugten Objekten befüllen Java Basics - Anfänger-Themen 4
R Array eines neuen Typen erstellen und befüllen Java Basics - Anfänger-Themen 2
E Mehrdimensionales Array automatisch befüllen Java Basics - Anfänger-Themen 9
B mehrer comboboxes mit dem selben inhalt befüllen Java Basics - Anfänger-Themen 8
berti99 Zweidimensionales Array befüllen Java Basics - Anfänger-Themen 5
E Array mit Zahlen von 1-(Zeilen*Spalten) befüllen Java Basics - Anfänger-Themen 8
J array befüllen Java Basics - Anfänger-Themen 4
D ArrayList dynamisch befüllen Java Basics - Anfänger-Themen 14
-horn- EINE setter/getter klasse aus mehreren klassen befüllen Java Basics - Anfänger-Themen 13
-horn- Array mit nicht fixer Größe möglich? Nachträgliches befüllen Java Basics - Anfänger-Themen 10
G JTextArea mit Daten aus Datenbank ( im Wert Sring ) befüllen Java Basics - Anfänger-Themen 3
S Objekt befüllen Java Basics - Anfänger-Themen 7
L Vektor befüllen? Java Basics - Anfänger-Themen 3
L Table über SQL befüllen Java Basics - Anfänger-Themen 2
K Array deklarieren und befüllen; "]" expected Java Basics - Anfänger-Themen 7
G JTable Zeilen befüllen Java Basics - Anfänger-Themen 2
M JTable befüllen Java Basics - Anfänger-Themen 3
M TableModel befüllen Java Basics - Anfänger-Themen 14
G JComboBox befüllen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben