Autor Tema: parseado o Conversión de tipo de datos (tipado) Java ejemplo ejercicio CU00670B  (Leído 3982 veces)

Pasandav

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
El mensaje "operator * cannot be applied to int, java.lang.String", indica que no se puede realizar la operación de multiplicar sobre un String (el valor actual de entradaUsuario).

Una de las soluciones es:

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

public class ejemplo1 {
   
    public static void main (String[] Args) {
        String entradaUsuario =  JOptionPane.showInputDialog ( "Introduzca un número:" );
        int entero;
         entero= Integer.valueOf  (entradaUsuario);
        System.out.println ("El doble del número introducido es: " + 2 * entero); 
    }
}

Espero que sea lo que se pedía.
Un saludo y gracias.
« Última modificación: 26 de Octubre 2015, 12:45 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, perfecto, exactamente lo que se pedía, hacer una conversión del tipo de dato que evitara que saltara el error

Saludos

DaniMir

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Me surge una duda con esta solución, ¿no sería más correcto declarar entero como Integer en lugar de int?

Gracias,
             Un saludo.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola DaniMir, normalmente hay distintas alternativas para solucionar un mismo problema. Puedes plantear una solución alternativa declarando entero como Integer si lo deseas. Pega el código y lo comparamos. Saludos.

DaniMir

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Simplemente en lo que tengo duda es que en esta solución  se declara "entero" como int y sin embargo luego se le asigna un valor Integer en la línea "entero= Integer.valueOf  (entradaUsuario);" ¿ esto se puede hacer? ¿entero no deberia declararse como "Integer" en lugar de "int" si mediante "valueOf" estoy obteniendo un Integer? Tal y como está la solución se le está asignando a un entero primitivo "int" un objeto Integer.

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Hola, tienes razón en que hay un conflicto o no equivalencia exacta de tipos. No obstante, en este caso lo que hace el compilador es un parseado automático, automáticamente te convierte de int a Integer o viceversa si le es posible. De este modo lo que hace el compilador es transformar al tipo necesario.

Puedes declarar entero como Integer y podríamos decir que evitas esa conversión de tipos y es más correcto, aunque en este caso no tiene demasiada relevancia.

El compilador realiza ciertas acciones de forma automática en segundo plano. "Se puede hacer" todo lo que te permita el compilador, aunque hay ciertas cosas que aunque se pueden hacer podrían calificarse como malas prácticas de programación, pero en este caso como te he comentado tiene poca importancia.

Saludos

 

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".