Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Pasandav en 23 de Octubre 2015, 21:06

Título: parseado o Conversión de tipo de datos (tipado) Java ejemplo ejercicio CU00670B
Publicado por: Pasandav en 23 de Octubre 2015, 21:06
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.
Título: Re:parseado o Conversión de tipo de datos (tipado) Java ejemplo ejercicio CU00670B
Publicado por: Alex Rodríguez en 26 de Octubre 2015, 12:47
Hola, perfecto, exactamente lo que se pedía, hacer una conversión del tipo de dato que evitara que saltara el error

Saludos
Título: Re:parseado o Conversión de tipo de datos (tipado) Java ejemplo ejercicio CU00670B
Publicado por: DaniMir en 17 de Febrero 2016, 12:09
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.
Título: Re:parseado o Conversión de tipo de datos (tipado) Java ejemplo ejercicio CU00670B
Publicado por: Alex Rodríguez en 19 de Febrero 2016, 09:15
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.
Título: Re:parseado o Conversión de tipo de datos (tipado) Java ejemplo ejercicio CU00670B
Publicado por: DaniMir en 21 de Febrero 2016, 21:48
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.
Título: Re:parseado o Conversión de tipo de datos (tipado) Java ejemplo ejercicio CU00670B
Publicado por: Mario R. Rancel en 23 de Febrero 2016, 13:47
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