Netbeans - Por que me da false igualmente?

 
Vista:
sin imagen de perfil

Por que me da false igualmente?

Publicado por Jeffry (2 intervenciones) el 07/01/2022 15:49:48
Hola, estoy haciendo un ejercicio de uni el cual es este "Un método que valide la clave del trabajador, siendo ésta los 4 primeros dígitos del run" , al momento de crear el metodo, que la verdad no se si este bien ya que lo eh intentado bastante, nose porque me sigue dando false, alguien me puede decir porque sigue dando false ?

METODO:
public boolean validarRutClave(){
int numero = run;
String x = Integer.toString(numero);
if (x.substring(0,3).contains(x)){
return true;
}else{
System.out.println("No son parte del Rut");
return false;
}

}

MAIN:
Trabajador trab = new Trabajador(32466874, '9', "jeffry");
trab.validarRutClave();

CLASE:
private int run;
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 Kabuto
Val: 12
Ha aumentado su posición en 13 puestos en Netbeans (en relación al último mes)
Gráfica de Netbeans

Por que me da false igualmente?

Publicado por Kabuto (17 intervenciones) el 07/01/2022 21:00:16
1
if (x.substring(0,3).contains(x)){
Ahí estás preguntando "si los primeros 4 dígitos de x, contienen a x (entero)". Obviamente eso es imposible, y por lo tanto falso.

Quizás la pregunta acertada sería "si los primeros 4 dígitos, coinciden con la clave"
1
if (x.substring(0,3).equals(clave)){
Pero no me queda claro en que variable/atributo está almacenada la clave

Quizás si pones el código completo de la clase Trabajador sepamos indicarte mejor cuál sería la pregunta adecuada
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
sin imagen de perfil

Por que me da false igualmente?

Publicado por Jeffry (2 intervenciones) el 08/01/2022 00:59:04
Muchas Gracias por tu Tiempo!!
Te Comento, se supone que lo que busco es obtener los primeros 4 digitos del rut por ejemplo:
El rut es "32466874" lo que busco son los primeros 4 caracteres los cuales serian "3246" y estos numeros serian la clave de la tarjeta
aca dejare el modelo completo Muchas Gracias por tu tiempo!!
tutoayuda
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
Imágen de perfil de Kabuto
Val: 12
Ha aumentado su posición en 13 puestos en Netbeans (en relación al último mes)
Gráfica de Netbeans

Por que me da false igualmente?

Publicado por Kabuto (17 intervenciones) el 08/01/2022 22:47:21
¿Y el método validarRutClave() lo has puesto en la clase Trabajador porque así lo indica el enunciado del ejercicio?
¿O ha sido decisión tuya?

Es que el problema está en que la clase Trabajador, no tiene acceso a la clave de la Tarjeta. Por eso no has encontrado una "forma lógica" de hacer la validación, porque la clase Trabajador no cuenta con los atributos necesarios.

Sin embargo, la clase Tarjeta tiene como atributo un objeto Trabajador, que es el trabajador asociado a esa tarjeta.
Entonces, la clase Tarjeta si podría ejecutar sin problemas el método validarRutClave(). Porque tiene acceso al atributo "clave" y también al atributo "run" del Trabajador asociado.

Es decir, la clase Trabajador no puede ver la Tarjeta a la que pertenece.
Pero la clase Tarjeta, puede ver al Trabajador asociado.

Por eso Tarjeta es mejor candidata a tener el método validarRutClave().

Si fuera obligatorio que sea la clase Trabajador quien se encargue de esa validación, se podría solucionar haciendo que el método reciba la Tarjeta por argumentos:
1
public boolean validarRutClave(Tarjeta tarjeta)

Pero quedaría un poco raro hacer que la clase Trabajador reciba la Tarjeta a la que está asociada, como si fuera algo "externo".
Puede funcionar, pero queda extraño, no parece una solución demasiada lógica.

Así que si puedes, haz que sea Tarjeta quien haga la validación. Puede acceder al run a través de su atributo Trabajador.

Y si ha de ser el Trabajador obligatoriamente, pues el método tendrá que recibir la Tarjeta (o la clave) por los paréntesis.

Intenta una de esta soluciones, y si sigues sin conseguirlo, te ayudamos.

Un saludo.
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