Java - Duda con método consultable

 
Vista:
sin imagen de perfil
Val: 21
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Duda con método consultable

Publicado por Jose_Romero (10 intervenciones) el 05/11/2018 18:49:50
Buenas tardes, estoy realizando una clase con sus propiedades, constructor, toString, etc, pero tengo el siguiente problema. Le tengo puesto algunas restricciones a algunas propiedades y cuando llamo al constructor haciendo que salten alguna restricción lo hace bien, el problema es cuando cambio el valor de la variable en el set y luego lo llamo para comprar su valor y me lo da como bueno cuando tendría que saltar la restricción. Os adjunto mi codigo y mis pruebas:

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
public class Persona2 {
    private String nombre;
    private String apellido1;
    private String apellido2;
    private Integer edad;
    private double estatura;
    private double peso;
    private Integer estado;
 
    private void checkEdad(Integer edad){
       if(this.edad<0 || this.edad>100){
            this.edad = -1;
       }
    }
 
    public void setEdad(Integer edad) {
        checkEdad(edad);
        this.edad = edad;
    }
 
    private void checkEstatura(double estatura){
        if(this.estatura<0.50 || this.estatura>2.10){
            this.estatura = -1;
        }
    }
 
    public void setEstatura(double estatura) {
        checkEstatura(estatura);
        this.estatura = estatura;
    }
 
    private void checkPeso(double peso){
        if(this.peso<35 || this.peso>150){
            this.peso = -1;
        }
    }
 
    public void setPeso(double peso) {
        checkPeso(peso);
        this.peso = peso;
    }
 
    public void setEstatura(int estatura) {
        this.estatura = estatura;
    }
 
    public void setPeso(int peso) {
        this.peso = peso;
    }
 
    private void checkEstado(Integer estado){
        if(this.estado<0 || this.estado>5){
            this.estado = 0;
        }
    }
 
    public void setEstado(Integer estado) {
        checkEstado(estado);
        this.estado = estado;
    }
 
    public String getNombre() {
        return nombre;
    }
 
    public String getApellido1() {
        return apellido1;
    }
 
    public String getApellido2() {
        return apellido2;
    }
 
    public Integer getEdad() {
        return edad;
    }
 
    public double getEstatura() {
        return estatura;
    }
 
    public double getPeso() {
        return peso;
    }
 
    public Integer getEstado() {
        return estado;
    }
 
    public Persona2(String nombre, String apellido1, String apellido2, Integer edad, double estatura, double peso, Integer estado) {
        this.nombre = nombre;
        this.apellido1 = apellido1;
        this.apellido2 = apellido2;
        this.edad = edad;
        this.estatura = estatura;
        this.peso = peso;
        this.estado = estado;
 
        checkEdad(edad);
        checkEstatura(estatura);
        checkPeso(peso);
        checkEstado(estado);
    }
 
    @Override
    public String toString() {
        return "Persona2{" + "nombre=" + nombre + ", apellido1=" + apellido1 + ", apellido2=" + apellido2 + ", edad=" + edad + ", estatura=" + estatura + ", peso=" + peso + ", estado=" + estado + '}';
    }
 
 
 
    public static void main(String[] args) {
 
    Persona2 p = new Persona2("Jose", "Romero", "Ruiz", 23, 1.80, 75, 1);
 
    System.out.println("Nombre: "+p.getNombre());
    System.out.println("Apellido1: "+p.getApellido1());
    System.out.println("Apellido2: "+p.getApellido2());
    System.out.println("Edad: "+p.getEdad());
    System.out.println("Estatura: "+p.getEstatura());
    System.out.println("Peso: "+p.getPeso());
    System.out.println("Estado: "+p.getEstado());
    System.out.println("ToString: "+p.toString());
    p.setEstado(6);
    System.out.println(p);
}
}

Al ejecutar me muestra lo siguiente:
Nombre: Jose
Apellido1: Romero
Apellido2: Ruiz
Edad: 23
Estatura: 1.8
Peso: 75.0
Estado: 1
ToString: Persona2{nombre=Jose, apellido1=Romero, apellido2=Ruiz, edad=23, estatura=1.8, peso=75.0, estado=1}
Valor estado modificado: 6

Mi problema es que al llamar al nuevo valor de getEstado me devuelve 6, pero le paso la restricción de que devuelva -1, ¿que me podría fallar?
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

Duda con método consultable

Publicado por Billy Joel (874 intervenciones) el 05/11/2018 19:20:37
En los metodos set; por ejemplo el método setEstado tu verificas y luego asignas
1
2
3
4
public void setEstado(Integer estado) {
    checkEstado(estado);
    this.estado = estado;
}

Para que funcione debería ser asignar y luego verificar. Asi:
1
2
3
4
public void setEstado(Integer estado) {
    this.estado = estado;
    checkEstado(estado);
}

Entonces en los métodos check por ejemplo checkEstado no estabas evaluando el parámetro, estabas evaluando el valor de la propiedad. Entonces el cambio que he hecho es:
1
2
3
4
5
6
private void checkEstado(Integer estado) {
//  if (this.estado < 0 || this.estado > 5) {
    if (estado < 0 || estado > 5) {
        this.estado = 0;
    }
}

Al final el código completo:
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
public class Persona2 {
 
    private String nombre;
    private String apellido1;
    private String apellido2;
    private Integer edad;
    private double estatura;
    private double peso;
    private Integer estado;
 
    private void checkEdad(Integer edad) {
//        if (this.edad < 0 || this.edad > 100) {
        if (edad < 0 || edad > 100) {
            this.edad = -1;
        }
    }
 
    public void setEdad(Integer edad) {
        this.edad = edad;
        checkEdad(edad);
    }
 
    private void checkEstatura(double estatura) {
        if (estatura < 0.50 || estatura > 2.10) {
            this.estatura = -1;
        }
    }
 
    public void setEstatura(double estatura) {
        this.estatura = estatura;
        checkEstatura(estatura);
    }
 
    private void checkPeso(double peso) {
//        if (this.peso < 35 || this.peso > 150) {
        if (peso < 35 || peso > 150) {
            this.peso = -1;
        }
    }
 
    public void setPeso(double peso) {
        this.peso = peso;
        checkPeso(peso);
    }
 
    public void setEstatura(int estatura) {
        this.estatura = estatura;
    }
 
    public void setPeso(int peso) {
        this.peso = peso;
    }
 
    private void checkEstado(Integer estado) {
//  if (this.estado < 0 || this.estado > 5) {
        if (estado < 0 || estado > 5) {
            this.estado = 0;
        }
    }
 
    public void setEstado(Integer estado) {
        this.estado = estado;
        checkEstado(estado);
    }
 
    public String getNombre() {
        return nombre;
    }
 
    public String getApellido1() {
        return apellido1;
    }
 
    public String getApellido2() {
        return apellido2;
    }
 
    public Integer getEdad() {
        return edad;
    }
 
    public double getEstatura() {
        return estatura;
    }
 
    public double getPeso() {
        return peso;
    }
 
    public Integer getEstado() {
        return estado;
    }
 
    public Persona2(String nombre, String apellido1, String apellido2, Integer edad, double estatura, double peso, Integer estado) {
        this.nombre = nombre;
        this.apellido1 = apellido1;
        this.apellido2 = apellido2;
        this.edad = edad;
        this.estatura = estatura;
        this.peso = peso;
        this.estado = estado;
 
        checkEdad(edad);
        checkEstatura(estatura);
        checkPeso(peso);
        checkEstado(estado);
    }
 
    @Override
    public String toString() {
        return "Persona2{" + "nombre=" + nombre + ", apellido1=" + apellido1 + ", apellido2=" + apellido2 + ", edad=" + edad + ", estatura=" + estatura + ", peso=" + peso + ", estado=" + estado + '}';
    }
 
    public static void main(String[] args) {
 
        Persona2 p = new Persona2("Jose", "Romero", "Ruiz", 23, 1.80, 75, 1);
 
        System.out.println("Nombre: " + p.getNombre());
        System.out.println("Apellido1: " + p.getApellido1());
        System.out.println("Apellido2: " + p.getApellido2());
        System.out.println("Edad: " + p.getEdad());
        System.out.println("Estatura: " + p.getEstatura());
        System.out.println("Peso: " + p.getPeso());
        System.out.println("Estado: " + p.getEstado());
        System.out.println("ToString: " + p.toString());
        p.setEstado(6);
        System.out.println(p);
    }
}
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