Autor Tema: CU00670B# Conversión tipos operator * cannot be applied to int, java.lang.String  (Leído 5516 veces)

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Ahí van mis respuestas al ejercicio.

 salta un mensaje de error “operator * cannot be applied to int, java.lang.String”

a ¿Qué interpretación haces de este mensaje de error?
Respuesta Al querer multiplicar un entero 2 * String (entradaUsuario) salta error por incompatibilidad de tipos.

b ¿Cómo se puede corregir el código para que a través de una conversión de tipos se ejecute el programa?
Respuesta

Con valueOf. Transformo el String en un Integer, y opero con el pues Java creo se explicó que transformaba un objeto Integer a un int primitivo por si solo (en el cálculo, lo añado porque en el siguiente capitulo se ve la importancia de pasar bien tipos primitivos o Objetos) , sino habria que volver a transformar el Integer a int con un,
   int nuevoNumero = (int)ObjetoInteger;

Código: [Seleccionar]
import javax.swing.JOptionPane;

public class Ejemplo1{
   
    public static void main (String [] args){
        Integer numero = 0;
        String entradaUsuario = JOptionPane.showInputDialog("Introduzca un número:");
        numero = numero.valueOf(entradaUsuario);
        System.out.println("El doble del numero introducido es : " + 2 * numero);
    } //cierre main
}// cierre clase

con parseInt

Código: [Seleccionar]
import javax.swing.JOptionPane;

public class Ejemplo1{
   
    public static void main (String [] args){
        int numero;
        String entradaUsuario = JOptionPane.showInputDialog("Introduzca un número:");
        numero = Integer.parseInt(entradaUsuario);
        System.out.println("El doble del numero introducido es : " + 2 * numero);
    } //cierre main
}// cierre clase

Hay alguna diferencia? me da la sensación que con parseInt ya convierte String --> Integer ---> int. la doble conversión y valueOf necesitaria hacerla de nuevo con el Integer.
« Última modificación: 10 de Abril 2015, 09:46 por Mario R. Rancel »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Hola Lorenzo, tus respuestas son correctas.

valueOf y parseInt son métodos que en algunos casos pueden resultar equivalentes, aunque no son exactamente lo mismo. Si consultamos el api de java lo comprobamos:

valueOf(String s) devuelve una instancia de Integer que contiene el valor indicado por el String

public static int parseInt(String s) devuelve un tipo primitivo int con el valor indicado por el String


La diferencia principal es que un método te devuelve un tipo primitivo y el otro un objeto, y no es lo mismo un tipo primitivo que un objeto, aunque algunas veces podamos trabajar con ellos como si fueran equivalentes.

Saludos

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Buenas Mario, gracias por tu respuesta y tus explicaciones. Entiendo lo que dices, muy clara tu explicació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".