Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: guillerub2001 en 02 de Mayo 2015, 11:23
-
Hola! Bueno, pues aquí ando con un problema, al intentar compilar, me sale:
bad operand types for binary operator '-' first type: java.lang.String; second type: int
¡Gracias!
public class Medicos2 {
private String nombre;
private String apellidos;
private int edad;
private boolean casado;
private String dni;
private String especialidad;
public Medicos2 () {
nombre = "";
apellidos = "";
edad = 0;
casado = false;
dni = "";
especialidad = "";
}
public void setNombre (String valorNombre) {
nombre = valorNombre;
}
public void setApellidos (String valorApellidos) {
apellidos = valorApellidos;
}
public void setEdad (int valorEdad) {
edad = valorEdad;
}
public void setCasado (boolean valorCasado) {
casado = valorCasado;
}
public void setDni (String valorDni) {
dni = valorDni;
}
public void setEspecialidad (String valorEspecialidad) {
especialidad = valorEspecialidad;
}
public void calculoMultiploEdad () {
//El problema está en esta línea// System.out.println ("El medico de nombre" + nombre + "con especialidad" + especialidad + "tendra una edad multiplo de 5 dentro de" + 5-(edad%5));
}
public String getNombre () {return nombre;}
public String getApellidos () {return apellidos;}
public int getEdad () {return edad;}
public boolean getCasado () {return casado;}
public String getDni () {return dni;}
public String getEspecialidad () {return especialidad;}
}
PD: Ya he conseguido solucionarlo haciéndolo de otra manera, pero me gustaría saber el por qué y cómo corregir este problema.
-
Hola guillerub
La solución a esto es bien sencillo:
public void calculoMultiploEdad () {
System.out.println ("El medico de nombre " + nombre + "con especialidad " + especialidad + " tendra una edad multiplo de 5 dentro de " + (5-(edad%5)) + " años.");
Solo era colocarle un parentesis por fuera y listo, problema resuelto. Cuando quieras concatenar operaciones numericas en el System.out.print, lo recomendado para evitar errores de este tipo es colocarle los parentesis por fuera..
Ademas, tu ejercicio esta correcto! todos los setters y getters correctos, operacion tambien!
Saludos!
-
Muchas gracias :)
-
private int edadmulti;
public Medico (){
nombre="";
apellidos="";
edad=0;
casado=false;
dni="";
especialidad="";
}
public void setnombre (String valornombre){
nombre=valornombre;
System.out.println("el nombre del doctor ha sido cambiado a " + nombre);}
public String getnombre() {return nombre;};
public void setapellidos (String valorapellido){
apellidos=valorapellido;
System.out.println("el apellido ha sido cambiado a " + apellidos);
}
public String getapellido () {return apellidos;};
public void setedad (int valoredad){
edad=valoredad;
System.out.println("la edad cambio a "+ edad);
}
public int getedad() {return edad;};
public void setcasado (boolean valorcasado){
casado=valorcasado;
System.out.println("ha cambiado de estado a casado "+ casado);
}
public boolean getcasado () {return casado;};
public void setdni ( String valordni){
dni=valordni;
System.out.println("el dni ha cambiado a" +dni);
}
public String getdni(){return dni;};
public void setespecialidad (String valorespecialidad){
especialidad=valorespecialidad;
System.out.println("la especialidad cambio a "+ especialidad);}
public String setespecialidad(){return especialidad;};
public void Calculoparamultiploedad(){
edadmulti= edad % 10;
if (edadmulti !=5){edadmulti=5-edadmulti;
System.out.println("el medico de nombre " +nombre+ "y especialidad "+especialidad +" le faltan "+ edadmulti + "para llegar a una edad multiplo de 5");}
else {System.out.println("el medico de nombre " +nombre+ "y especialidad "+especialidad + "tiene una edad multiplo de 5");}
}
}
no se si crear temas nuevos o ponerlos en otro tampoco se como me responden me avisa??
-
Hola Macarena:
Tu código está cortado en su parte incial, creo que hiciste "copy" "paste" y hay una parte que no se logró copiar bien. Pero asumo que es el mismo código que te corregí en el ejercicio anterior, con el agregado del método que pedía la consigna de este ejercicio.
Te repito nuevamente lo referido a que los atributos y métodos deben comenzar con letra minúscula, y solamente los nombres de las clases con letra mayúscula.
Por eso, a tu clase Calculoparamultiploedad() la deberías renombrar calculoParaMultiploEdad(), tal cual se pedía en la consigna del ejercicio.
Fíjate que el nombre del método comienza con minúscula, y las siguientes palabras comienzan con mayúscula para lograr así una mejor lectura.
Refiriéndome entonces a este último método, habría que hacer un pequeño cambio en la línea:
edadmulti= edad % 10;
debería ser:
edadmulti= edad % 5;
así funcionaría correctamente.
Analízalo y cualquier duda que tengas, acá estamos por ayudarte!
Preguntabas nuevamente cómo hacer para publicar tus ejercicios en un nuevo hilo.
Una vez que te logueas en el foro, entras en "Aprender a programar desde cero", y haz click en "NUEVO TEMA".
No olvides de escribir en el título del nuevo tema a qué ejercicio se refiere tu publicación.