Java - Problema con un contructor

 
Vista:
Imágen de perfil de Yago
Val: 22
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Problema con un contructor

Publicado por Yago (8 intervenciones) el 11/11/2020 23:26:29
Buenas, como siempre tengo mis lios grandes y hoy es con un constructor.



Tengo el siguiente código, y el problema viene con
1
Punto2D p2 = new Punto2D(p1);

No entiendo por qué no coge los datos de p1 T__TT

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package tema3;
 
 
public class Punto2D {
    private double cx;
    private double cy;
 
    public Punto2D() {
        cx = 0.0;
        cy = 0.0;
}
    public Punto2D(double x, double y) {
        cx=x;
        cy=y;
        this.cx = cx;
        this.cy = cy;
    }
 
    public double getX() {
        return cx;
    }
 
    public void setX(double x) {
        this.cx = x;
    }
 
    public double getY() {
        return cy;
    }
 
    public void setY(double y) {
        this.cy = y;
    }
 
    public void flip(){
        this.cx = cy;
        this.cy = cx;
 
}
 
    double dist(Punto2D p){
        return Math.sqrt(Math.pow(p.cx - this.cx, 2) + Math.pow(p.cy - this.cy, 2));
    }
    double manhattanDist(Punto2D p){
        return Math.abs(p.cx - this.cx) + Math.abs(p.cy - this.cy);
    }
    double slope (Punto2D p){
        return (p.cy - this.cy)/(p.cx - this.cx);
    }
 
    @Override
    public String toString() {
        return "Punto2D[" + cx + "," + cy + ']';
    }
 
    public static void main(String[]args){
    Punto2D p1 = new Punto2D(4.5, 5.5);
    Punto2D p2 = new Punto2D(p1);
    System.out.println(p2);
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con un contructor

Publicado por Billy Joel (876 intervenciones) el 12/11/2020 00:15:27
Supongo que solo era cuestión de agregar un nuevo constructor.
El código completo lo dejo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
public class Punto2D {
 
    private double cx;
    private double cy;
 
    public Punto2D() {
        cx = 0.0;
        cy = 0.0;
    }
 
    public Punto2D(double cx, double cy) {
        this.cx = cx;
        this.cy = cy;
    }
 
    public Punto2D(Punto2D p) {
        this.cx = p.getX();
        this.cy = p.getY();
    }
 
    public double getX() {
        return cx;
    }
 
    public void setX(double x) {
        this.cx = x;
    }
 
    public double getY() {
        return cy;
    }
 
    public void setY(double y) {
        this.cy = y;
    }
 
    public void flip() {
        this.cx = cy;
        this.cy = cx;
    }
 
    double dist(Punto2D p) {
        return Math.sqrt(Math.pow(p.cx - this.cx, 2) + Math.pow(p.cy - this.cy, 2));
    }
 
    double manhattanDist(Punto2D p) {
        return Math.abs(p.cx - this.cx) + Math.abs(p.cy - this.cy);
    }
 
    double slope(Punto2D p) {
        return (p.cy - this.cy) / (p.cx - this.cx);
    }
 
    @Override
    public String toString() {
        return "Punto2D[" + cx + "," + cy + ']';
    }
 
    public static void main(String[] args) {
        Punto2D p1 = new Punto2D(4.5, 5.5);
        Punto2D p2 = new Punto2D(p1);
        System.out.println(p2);
    }
}

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con un contructor

Publicado por Kabuto (1381 intervenciones) el 12/11/2020 00:15:48
Tu clase tiene dos constructores.

Uno que no recibe nada entre paréntesis:


1
2
3
4
public Punto2D() {
        cx = 0.0;
        cy = 0.0;
}

Y otro que recibe dos valores tipo double:
1
2
3
4
5
6
public Punto2D(double x, double y) {
        cx=x;
        cy=y;
        this.cx = cx;
        this.cy = cy;
    }
Que por cierto, esas líneas usando this son innecesarias, por eso te las tacho.


Pero tu aquí, no estas usando ni uno ni otro.
1
Punto2D p2 = new Punto2D(p1);

Ahí, entre paréntesis estás pasando un objeto de la clase Punto2D.
Y tu no has definido ningún constructor que esté preparado para eso.

Es decir, vas a necesitar un tercer constructor que sepa recibir un objeto de esa clase, y sepa que hacer con él.
Por ejemplo:
1
2
3
4
public Punto2D(Punto2D otroPunto) {
        cx= otroPunto.getX();
        cy= otroPunto.getY();
    }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mini
Val: 22
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Problema con un contructor

Publicado por Mini (8 intervenciones) el 12/11/2020 09:01:42
Muchas gracias chicos.

Menos mal que os tengo a vosotros que me sois de gran ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar