double[x] , double[y] zu Point[] points kopieren?

student1

Mitglied
Hallo,
hoffe einer kann mir bei meinem Problem weiterhelfen.

Ich hab zwei Arrays vom Typ double[]x,double[]y erzeugt, die Punkte beinhalten.

Java:
public double x[];
public double y[];

Die möchte ich nun in das Objekt Point[] points kopieren.
Java:
public static Point[] points;

Ich habe das versucht:
Java:
Polygon coord = new Polygon(x,y);
for (int i = 0; i < sides; i++) {
		
	points[i].x = coord.x[i];
        points[i].y = coord.y[i];
}

Ich kriege immer diese Fehlermeldung: "java.lang.NullPointerException"


Wie mache ich das richtig??


mfg
 

student1

Mitglied
Ok. Ich hab es initialisiert..
aber wie krieg da jetzt die x[] und y[] werte rein?

sodass ich für points.x alle meine x-koordinaten habe und für points.y alle y-koordinaten?
Sorry steh gerade aufm Schlauch..sitze schon zulange davor..
 

student1

Mitglied
Java:
Polygon coord = new Polygon(x,y);
		Point[] myarray = new Point[2];
		for (int i = 0; i < sides; i++) {

			x[i] = cx + Math.cos(i * theta) * radius.x;
			y[i] = cy + Math.sin(i * theta) * radius.y;

			double xn = x[i];
			double yn = y[i];
			
			
			myarray = new Point[]{new Point(xn,yn)};
		;
			
		}
		
		System.out.println(myarray[0].x+ " " + x[0]);
 
Zuletzt bearbeitet:

Sogomn

Bekanntes Mitglied
@student1: Das ist eine seltsame Lösung...

Java:
int[] x = new int[10];
int[] y = new int[10];
Point[] points = new Point[10];

for (int i = 0; i < points.length; i++) {
   points[i] = new Point(x[i], y[i]);
}
 
Zuletzt bearbeitet:

student1

Mitglied
ja..schaut ein bisschen komisch aus :D

hab aber trotzdem ein Problem mit den Punkten.

Java:
..........
Point[] points = new Point[n];
		for (int i = 0; i < sides; i++) {

			x[i] = cx + Math.cos(i * theta) * 1;
			y[i] = cy + Math.sin(i * theta) * 1;

			points[i] = new Point(x[i], y[i]);

			this.points = points;
                    System.out.println(points[i].x);
		}

 System.out.println(points[0].x);
}


Bei meiner ersten Ausgabe -->
1.0
-0.4999999999999998
-0.5000000000000004

Kriege ich die Punkte, die ich brauche,also in der Schleife gibt er mit das richtige raus.

Bei meiner zweiten Ausgabe-->
-0.5000000000000004

das kriege ich für points[0].x,points[1].x,points[2].x

immer das gleiche??
warum nicht.. 
points[0].x --> 1.0
points[1].x---> -0.4999999999999998
points[2].x --> -0.5000000000000004

Hier mein kompletter Quellcode, für diese Klasse...
Für diese Aufgabe habe ich noch die Klasse Point, Angle und App, die main() beinhaltet.

Java:
public class Polygon {

	private Point[] points;
	public int sides;
	private double theta, radius, cx, cy;
	private double x[];
	private double y[];

	public Polygon(Point[] points) {
		this.points = points;

	}// end polygon points

	// Punkte rotieren
	public Polygon rotate(Angle phi) {

		for (int i = 0; i < this.points.length; i++) {
			this.points[i].rotate(phi);

		}

		return new Polygon(new Point[] { new Point(points[0].x, points[0].y) });
	}

	// Punkte verschieben
	public Polygon translate(Point point) {

		for (int i = 0; i < this.points.length; i++) {
			points[i].shift(Point.x, Point.y);

		}

		return new Polygon(new Point[] { new Point(points[0].x, points[0].y) });
	}

	// Eckpunkte generieren
	public Polygon(int n) {

		Point args = new Point(n);

		sides = n; // n-ecken
		x = new double[sides];
		y = new double[sides];
		theta = 2.0 * Math.PI / sides;
		cx = 0; // Mittelpunkt
		cy = 0;

		Point[] points = new Point[n];
		for (int i = 0; i < sides; i++) {

			x[i] = cx + Math.cos(i * theta) * 1;
			y[i] = cy + Math.sin(i * theta) * 1;

			points[i] = new Point(x[i], y[i]);

			this.points = points;

		}

	}// end polygon n

	public void draw() {

	}

}// end Isogon
 

student1

Mitglied
Hat keiner eine Idee, warum meine Punkte in Point[], alle mit dem gleichen Punkt besetzt sind,
sodass ich für points[0].x ,points[1].x,points[2].x......... immer den gleichen Wert hab und nicht die gewünschten x-Koordinaten, die ich ja in x[0], x[1],... ja habe??

Java:
import gdp.stdlib.*;

public class Polygon {

	private Point[] points;
	public int sides;
	private double theta, radius, cx, cy;
	private double x[];
	private double y[];

	public Polygon(Point[] points) {

		this.points = points;

	}// end polygon points

	// Punkte rotieren
	public Polygon rotate(Angle phi) {

		for (int i = 0; i < this.points.length; i++) {
			points[i].rotate(phi);

		}
		System.out.println(points[0].x + " " + points[1].x + " " + points[2].x);
		return new Polygon(points);
	}

	// Punkte verschieben
	public Polygon translate(Point point) {

		for (int i = 0; i < this.points.length; i++) {
			this.points[i].shift(Point.x, Point.y);

		}
		System.out.println(points[0].x + " " + points[1].x + " " + points[2].x);
		return new Polygon(points);
	}

	// Eckpunkte generieren
	public Polygon(int n) {
		Point args = new Point(n);
		sides = n; // n-ecken
		this.x = new double[sides];
		this.y = new double[sides];
		theta = 2.0 * Math.PI / sides;
		cx = 0; // Mittelpunkt
		cy = 0;

		Point[] points = new Point[n];
		for (int i = 0; i < sides; i++) {

			x[i] = cx + Math.cos(i * theta) * 1;
			y[i] = cy + Math.sin(i * theta) * 1;

			points[i] = new Point(x[i], y[i]);

			this.points = points;
			System.out.println(points[0].x + " " + points[1].x + " " + points[2].x);
		}
		System.out.println(points[0].x + " " + points[1].x + " " + points[2].x);
	}// end polygon n

	public void draw() {

		System.out.println(points[0].x + " " + points[1].x + " " + points[2].x);
		
		/*
		double[] x1 = new double[points.length];
		double[] y1 = new double[points.length];
		
		for(int i=0;i<points.length;i++){
			x1[0] = points[0].x;
			x1[1] = points[1].x;
			x1[2] = points[2].x;
			
			y1[i] = Point.y;
			System.out.println(x1[i]);
		}
		
		 */
		

	}

}// end Isogon
 

Saheeda

Top Contributor
Ich habe es gerade bei mir mal ausgeführt und bekomme drei verschiedene Punkte ausgegeben.

Was mir aber auffällt:
- Du erzeugst im Konstruktor eine lokale Variable "points". Entferne die und arbeite besser direkt auf dem privaten Point-Array. Es müllt den Code nur unnötig zu.

- die Variable Point args wird nie benutzt

- Warum erzeugst du die x- und y-Arrays? Du arbeitest nie mit ihnen, sondern speicherst die Werte direkt in einer Point-Instanz. Auch das würde ich vereinfachen und mit lokalen Variablen arbeiten, die ins Array geschrieben werden.
(Außerdem kostet dich die Erzeugung eines Arrays mehr Speicher als ein Integer, aber das ist wahrscheinlich Korinthenkackerei....)

- Außerdem würde ich Zeile 59 und 61 entfernen und stattdessen die draw()-Methode aufrufen. Man versucht, Redundanz und Dopplungen zu vermeiden, um eventuelle Änderungen nur an einer Stelle vornehmen zu müssen.
 
Zuletzt bearbeitet:

student1

Mitglied
Erstmal Danke für die Tipps.
Ich sollte wohl noch ergänzend meine andere Klassen zeigen, die zu diesem Programm gehören.

Da wäre die erste Klasse, mein "Main" Klasse. Hier darf ich nichts verändern.. mein Programm muss mit diesen Angaben funktionieren:

Java:
import gdp.stdlib.StdDraw;

public class App {

	public static void main(String[] args) {
		if (args.length == 0) System.exit(-1);
		int n = Integer.parseInt(args[0]); 

		double myscale = 5.0; 

		
		Angle delta = new Angle(360. / n);
	
		
		Angle phi   = new Angle(0.0);

		Point pos = new Point(3., 0); 
		
		
		StdDraw.setXscale(-myscale, myscale);
		StdDraw.setYscale(-myscale, myscale);

		
	
		for (int i = 3; i < 3+n; i++) {

			
			
			new Polygon(i).rotate(phi).translate(pos.rotate(phi)).draw();
			
			phi = Angle.add(delta);
			
		}
		
		

		
	
		StdDraw.show();
	}

	
}

Dazu muss ich drei weitere Klassen benutzen.
Einmal die,die ich hier schon gepostet hab... Polygon

und dann noch die hier:

Java:
import gdp.stdlib.StdDraw;



public class Point  {

	public static double x;
	public static double y;
	public static int args;
	
	public Point(double x, double y){
		this.x = x;
		this.y = y;
	
	}//end Point
		
	public Point(int k){
		this.args = k;
	}
	
	public Point rotate (Angle phi){
		double xOld = Point.x;
		double yOld = Point.y;
		Point.x = xOld * Math.cos(Math.toRadians(phi.angle)) - yOld * Math.sin(Math.toRadians(phi.angle));
		Point.y = xOld * Math.sin(Math.toRadians(phi.angle)) + yOld * Math.cos(Math.toRadians(phi.angle));	
		
		return new Point(Point.x,Point.y);
	}//end rotate
	

	public Point shift (double dx, double dy) {
		Point.x = Point.x + dx;
		Point.y = Point.y + dy;	
		
		return new Point(Point.x,Point.y);
	}//end shift
	
}//end class Point

Java:
[code=Java]
public class Angle {

	public static double angle;

	Angle(double angle) {
		Angle.angle = Math.toRadians(angle);
	}

	public static Angle add(Angle angle) {

		Angle.angle = Math.toRadians(Angle.angle + (360 / Point.args));
		return angle;
	}

}





Also es muss new Polygon(i).rotate(phi).translate(pos.rotate(phi)).draw(); ausgeführt werden und für die Methode draw()
brauch ich zwei double[] damit ich meine Polygone zeichnen kann, mit dem Befehl StdDraw.polygon(double[]x,double[]y)
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Mich deucht ein static Fehler in der Point-Klasse:

Analogie:

Java:
public class Test {
  public static void main(String... args) {
    StaticFail[] fail = new StaticFail[10];
    for (int i = 0; i < fail.length; i++) {
      fail[i] = new StaticFail(i);
    }
    for (int i = 0; i < fail.length; i++) {
      System.out.println(fail[i].x);
    }
  }
  
  static class StaticFail {
    public static int x;
    
    public StaticFail(int x) {
      this.x = x;
    }
  }
}
 

student1

Mitglied
Ja das war das Problem...zu oft falsch static angewendet.
Jetzt kriege ich die Punkte richtig.
Ich hab dafür mit getter und setter gearbeitet,danach hat es funktioniert.

Danke!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Double or Float zusammenrechnen Java Basics - Anfänger-Themen 15
I Review von euch erwünscht, double Rechnung falsch Java Basics - Anfänger-Themen 34
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
krgewb Double mit zwei Nachkommastellen Java Basics - Anfänger-Themen 2
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
Lion.King Fehler in double und int Java Basics - Anfänger-Themen 7
F java: incompatible types: possible lossy conversion from double to int Java Basics - Anfänger-Themen 1
J Double Variable und Addition Java Basics - Anfänger-Themen 2
F Double Ausgabe nicht wissenschaftlich Java Basics - Anfänger-Themen 16
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
Kotelettklopfer Variablen Double zwingen Ganzzahlen mit 2 Nachkommastellen auszugeben Java Basics - Anfänger-Themen 10
A possible lossy conversion from double to int Java Basics - Anfänger-Themen 5
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
N The method setSaldo(double) in the type Konto is not applicable for the arguments (int, int) Java Basics - Anfänger-Themen 2
C Konvertierung des int typs in den double typ für die Ausgabe mit Nachkommastellen Java Basics - Anfänger-Themen 4
V Erste Schritte Die Nuller bei double NICHT abschneiden Java Basics - Anfänger-Themen 4
Y Datentypen Double Division ungenau Java Basics - Anfänger-Themen 45
L Datentypen Rechnen und abrunden mit double Java Basics - Anfänger-Themen 7
M Writer für unterschiedliche Obj/inbt/double erstellen? Java Basics - Anfänger-Themen 1
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
M Double Wert nach n abschneiden ohne zu runden Java Basics - Anfänger-Themen 1
D Methode mit Übergabe double und Rückgabe String Java Basics - Anfänger-Themen 2
P Hilfe bei Double Java Basics - Anfänger-Themen 1
B Rückgabe von zwei Werten: String und double Java Basics - Anfänger-Themen 14
B HQL / Hibernate, GroupBy und Ausgabe als Double Java Basics - Anfänger-Themen 1
M Konvertierung String -> double Java Basics - Anfänger-Themen 8
A Double Scan eingrenzen Java Basics - Anfänger-Themen 2
O Erste Schritte Potenzmethode per double Java Basics - Anfänger-Themen 11
A Random Double mit Math.round() runden? Java Basics - Anfänger-Themen 1
H Double oder nicht? Java Basics - Anfänger-Themen 7
J int array als double array ausgeben Java Basics - Anfänger-Themen 9
M Int und Double in Array speichern Java Basics - Anfänger-Themen 1
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
B Hashing (verkettet/double) Java Basics - Anfänger-Themen 0
L Konvertieren von String zu double?! Java Basics - Anfänger-Themen 6
V Operatoren Warum kommt bei double bei den Nachkommastellen irgendwann eine 2?! (1.20000000000002) Java Basics - Anfänger-Themen 5
geekex Double zu String umwandeln in einer Methode Java Basics - Anfänger-Themen 28
E Bruch erstellen - Von Int zu Double Ergebnis Java Basics - Anfänger-Themen 24
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
I Double.ParseDouble 2 Textfelder Java Basics - Anfänger-Themen 1
M JComboBox feste double Werte zu ordnen Java Basics - Anfänger-Themen 8
P Datentypen Kann ich bei double Komma statt Punkt eingeben? Java Basics - Anfänger-Themen 14
E Von Double zu Long umwandeln Java Basics - Anfänger-Themen 9
L Bei falscher Eingabe soll NaN zurückgegeben werden, Rückgabetyp jedoch double Java Basics - Anfänger-Themen 3
V Variablen Double später deklarieren Java Basics - Anfänger-Themen 7
V double = 1.34823e-300 Java Basics - Anfänger-Themen 5
W double*double error Java Basics - Anfänger-Themen 4
kilopack15 Mehr Nachkommastellen mit double Java Basics - Anfänger-Themen 14
T Input/Output Double und String als Eingabe einlesen Java Basics - Anfänger-Themen 9
J [Rundungsfehler bei Double] Grundkurs Java: Checke Lösungsweg nicht Java Basics - Anfänger-Themen 1
W In einer Function<Double, Double> undefinierte Rechenoperationen abfangen? Java Basics - Anfänger-Themen 3
T set Metode für Double Java Basics - Anfänger-Themen 6
Hijo2006 String to Double Java Basics - Anfänger-Themen 4
K Double Wert runden und in Int umwandeln Java Basics - Anfänger-Themen 7
A Kommafehler beim double einleseen korrigieren Java Basics - Anfänger-Themen 2
K Operatoren The Operator * is undefined for the argument type(s) double, String Java Basics - Anfänger-Themen 4
das_leon String zu double konventieren Java Basics - Anfänger-Themen 1
K Genauer als Double? Java Basics - Anfänger-Themen 4
T Double.parseDouble(args[0]) Java Basics - Anfänger-Themen 13
A Java Ungenauigkeit double Java Basics - Anfänger-Themen 6
B Methoden The method mirror(double[]) in the type Convolution is not applicable for the arguments (double) Java Basics - Anfänger-Themen 8
C Typumwandlung von int<-->double Java Basics - Anfänger-Themen 6
M Double Wert auf 2 Kommastellen runden Java Basics - Anfänger-Themen 2
S Regelabfragen aus Double-Array Java Basics - Anfänger-Themen 2
A Erste Schritte Double Wert aus String zu int Java Basics - Anfänger-Themen 2
P Rückgabe erflogt nicht als Double Java Basics - Anfänger-Themen 2
K Erste Schritte switch - Warum sind long/float/double/... nicht erlaubt? Java Basics - Anfänger-Themen 5
P scanner ein Double einlesen Java Basics - Anfänger-Themen 10
T Java double berechnung fehler Java Basics - Anfänger-Themen 2
G double in float umwandeln Java Basics - Anfänger-Themen 2
F double[] an andere Methode übergeben Java Basics - Anfänger-Themen 1
B Datentypen Test float und double speichern Zahlen nur ungefähr Java Basics - Anfänger-Themen 4
S Datentypen double - kommastellen abschneiden Java Basics - Anfänger-Themen 6
M int double int double Graph Java Basics - Anfänger-Themen 3
K ArrayList<Double> --> double[] array Java Basics - Anfänger-Themen 5
Z Double in komma und Punkt akzeptieren -> Robusteeingabe Java Basics - Anfänger-Themen 7
S Double und Gleitkommazahlen mit JUnit testen Java Basics - Anfänger-Themen 7
B Datentypen Multiplzieren mit double wird ungenau Java Basics - Anfänger-Themen 4
K Von einem Double wert nur die Zahl vor dem Komma verwenden Java Basics - Anfänger-Themen 9
F Double neu formatieren mit NumberFormat Java Basics - Anfänger-Themen 2
M Double-Ausgabe in JTextField fehlerhaft Java Basics - Anfänger-Themen 2
T Problem mit double-Formatierung Java Basics - Anfänger-Themen 3
M Double Zahl in Grad Zahl Java Basics - Anfänger-Themen 7
M Datentypen Ergebniss- Double to String- wird nicht angezeigt Java Basics - Anfänger-Themen 13
S Double mithilfe eines Scanners so einlesen, dass ich damit rechnen kann Java Basics - Anfänger-Themen 4
M Die Double-Variable rundet? Java Basics - Anfänger-Themen 1
llabusch Methoden Methoden überlagern - entweder int || double Java Basics - Anfänger-Themen 10
S Double, int, Berechnung Java Basics - Anfänger-Themen 3
K Datentypen Wertebereich float/double - Warum nicht hoch -1 Java Basics - Anfänger-Themen 6
A Double[] Array zahlen per Argument übergeben Java Basics - Anfänger-Themen 5
B Erste Schritte Addition von double in switch-Anweisung Java Basics - Anfänger-Themen 2
D Unterschied zwischen double und Double Java Basics - Anfänger-Themen 4
M Double-Zahlen auf Intervalle runden Java Basics - Anfänger-Themen 3
D Schon wieder double -.- Java Basics - Anfänger-Themen 4
V Object in double? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben