Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: fedegaray en 16 de Abril 2015, 15:15

Título: Ejercicio CU00670B. Conversión de tipos de datos en java (tipado)
Publicado por: fedegaray en 16 de Abril 2015, 15:15
Hola, tengo una pregunta. He finalizado el ejercicio de la lección CU00670B, pero tuve un problema. Si lo resolvía con la sintaxis que ofrece la lección, me arrojaba el error
Citar
Cannot find symbol - variable entradaConvertida

a causa de esta línea de código...

Código: [Seleccionar]
entradaUsuario = entradaUsuario.valueOf (entradaConvertida);
Intenté resolver este problema declarando (entes de la entrada del usuario) la variable de la siguiente manera
Citar
int entradaConvertida = 0;

pero al hacer esto, a pesar de que no arroja más el error, la resolución del problema es siempre "0". Por supuesto que me doy cuenta el por qué de este resultado, pero no logro ver cómo declarar la variable sin inicializarla con un valor que afectará el resultado. Investigando en la red descubrí que podía realizar la conversión de la siguiente manera

Código: [Seleccionar]
int entradaConvertida = Integer.valueOf (entradaUsuario);
y ahí sí todo salió bien, pero me preocupa no haberlo podido lograr con la sintaxis que propone la lección... ¿me he perdido de algo?

Esta es la resolución completa como me quedó...

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 entradaConvertida = Integer.valueOf (entradaUsuario);
        System.out.println ("El doble del número introducido es: " + 2* entradaConvertida); 
    }
}
Título: Re:Ejercicio CU00670B. Conversión de tipos de datos en java (tipado)
Publicado por: Dan_SB en 16 de Abril 2015, 18:28
Buenos dias fede!

Así propuso el curso resolverlo:

Citar
miInteger = miInteger.valueOf (miString)

miInteger quiere decir, tu Integer... osea... entradaConvertida debió declararse anteriormente como Integer. Si declaras entradaConvertida como int te saldra el error:

(http://i.imgur.com/2Vf7V5m.png)

Recordemos que int y Integer son dos cosas distintas. int es un tipo primitivo mientras que Integer es un objeto. El valueOf() funciona solamente con clases llamados "Tipos envolventes", ellas son:

1. Integer
2. Double
3. Float
4. Long
5. Byte
6. Short
7. Float
8. Double
9. Character
10. Boolean

Estas clases pueden acceder al valueOf(), en este caso era usar un Integer, quiero que copies este código y lo veas:
Código: [Seleccionar]
public static void main (String[] Args) {
        String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
        Integer entradaConvertida = 0;
        entradaConvertida = entradaConvertida.valueOf (entradaUsuario);
        System.out.println ("El doble del número introducido es: " + 2* entradaConvertida);
    }

veras que funciona como se esperaba! para ponerlo mas entendible, el valueOf solo trabaja con objetos. En cuanto a su solucion, no esta mal, se cumplio lo que se queria...

Espero haber aclarado las dudas,
Saludos!
Título: Re:Ejercicio CU00670B. Conversión de tipos de datos en java (tipado)
Publicado por: fedegaray en 16 de Abril 2015, 19:19
Completísima y muy útil respuesta. Muchas gracias, has resuelto mi duda!