Autor Tema: bad operand types for binary operator '-' first type: java.lang.String CU00633B  (Leído 6384 veces)

guillerub2001

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
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!

Código: [Seleccionar]
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.
« Última modificación: 04 de Mayo 2015, 08:25 por Alex Rodríguez »

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Re:Problema con ejercicio CU00633B
« Respuesta #1 en: 02 de Mayo 2015, 15:43 »
Hola guillerub

La solución a esto es bien sencillo:

Citar
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!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

guillerub2001

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Re:Problema con ejercicio CU00633B
« Respuesta #2 en: 02 de Mayo 2015, 17:14 »
Muchas gracias :)

macarena2405

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 36
    • Ver Perfil
Código: [Seleccionar]
     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??

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
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:

Código: [Seleccionar]
edadmulti= edad % 10;
debería ser:

Código: [Seleccionar]
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.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".