Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich habe hier meine Hauptklasse mit main Methode (1), aus der ich Variablen der Klasse Point (2) erstellen kann (zwei int- variablen für x und y). Jetzt soll ich in der Klasse Point die Methode generateRandom(int xy) erstellen. Diese wird wie bei 6. aufgerufen und soll jetzt vom Punkt v die x und y variable zufällig festlegen und ändern. Allerdings weiß ich nicht wie ich das machen soll, hab mit klassen gerade erst angefangen.
Danke,
Johannes
Java:
public class PointTester
{
public static void main (String [] args)
{
//1.
Point v = new Point();
//2.
v = new Point(30,40);
//3.
System.out.println("X: " + v.getX());
//4.
System.out.println("Y: " + v.getY());
//5.
System.out.println("Norm: " + v.norm());
//6.
v = Point.generateRandom(50);
//System.out.println("X: " + v.getX() + " Y: " + v.getY());
}
}
Java:
public class Point
{
private int x;
private int y;
public Point(){
}
public Point(int x, int y){
this.x=x;
this.y=y;
}
public int getX(){
return this.x;
}
public int getY(){
return this.y;
}
public double norm(){
return Math.sqrt(x*x+y*y);
}
public static Point generateRandom(int xy){
this.x=2*(int)(Math.random() * xy) + 1-xy;
int y=2*(int)(Math.random() * xy) + 1-xy;
return v;
}
}
EDIT:
Habe es jetzt irgendwie geschafft , scheint zu funktionieren
Java:
public static Point generateRandom(int xy){
int x=2*(int)(Math.random() * xy) + 1-xy;
int y=2*(int)(Math.random() * xy) + 1-xy;
return new Point(x, y);
Ist die "generateRandom als static-Methode vorgegeben ? ich würde die
nicht static machen, und ausserdem vom Typ void, also kein return-Wert.
Also du schmeisst einfach das static raus und die Zeile wo du jetzt was returnst.
(die Zeile war eh Schmarrn.)
Und in der main hast du ja schon v als Instanz von Point, d.h. dort rufst du auf:
Seh ich genauso.
Void statt static und return weg, dann sollte es klappen.
So wie du es jetzt gelöst hast geht es zwar auch, wird aber eher die falsche Lösung dafür sein.
Nunja - wenn der Aufruf so vorgegeben ist, wie im ersten Post, dann muss es ja die Lösung mit der statischen Funktion sein, die eine neue Instanz zurück gibt...
Mhmmm, er sagt nur er soll vom Punkt v die Koordinaten zufällig ändern. Und er würde dann ja nicht vom Punkt v die Koordinaten ändern sondern einen neuen Punkt erzeugen. Und das könnte er genausogut mit einem parametrisierten Konstruktor.
Er hat sich da nicht ganz exakt ausgedrückt. Ich hatte das Verständnis, dass diese Klasse PointTester vorgegeben war. Diese Kommentare a.la. 1. / 2. / 3. ... haben dieses Gefühl bei mir ausgelöst.
Das Design liegt mir aber immer noch etwas schwer im Magen. Eine Methode, die einen zufälligen Punkt erstellt - gehört dies wirklich zu einer Klasse Point? Das ist ja eigentlich kein normales Verhalten eines Punktes. Aber dafür ist ein Punkt auch einfach zu abstrakt denke ich mal. Da müsste man ggf. das ganze Objektmodell sehen, um hier sauber urteilen zu können denke ich mal. Oder mein Gefühl täuscht mich zu sehr, weil ich hier zu sehr in Richtung POJO tendiere.
Hallo,
genau, die PointTester Klasse war vorgegeben. Deshalb muss die Methode auch so aufgerufen werden... anders wäre ich schneller auf das Ergebnis gekommen.
Danke