Autor Tema: ERROR EN EJEMPLO CU00670B? método valueof java  (Leído 5376 veces)

betico

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
ERROR EN EJEMPLO CU00670B? método valueof java
« en: 27 de Mayo 2014, 12:19 »
Buenas tardes.

Me podíais confirmar si los ejemplos de la entrega 70 del curso de Java desde 0 referentes al uso del valueOf están correctos? Por ejemplo, el primero aparece como:

miInteger = miInteger.valueOf (i)

No debería ser de esta otra forma?

miInteger = Integer.valueOf (i)

Y lo mismo con el resto.

Un saludo y muchas gracias.
« Última modificación: 02 de Septiembre 2014, 18:26 por Alex Rodríguez »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:ERROR EN EJEMPLO CU00670B?
« Respuesta #1 en: 27 de Mayo 2014, 15:42 »
Hola, lo he revisado y no encuentro que haya un error (aunque podría haberlo, no digo que no).

El método está disponible para distintas clases y lo que hace es traerse a la clase que lo utiliza un valor convertible que pertenece a otra clase.

Por ejemplo puedes compilar esto:

Código: [Seleccionar]
public class ejemplo1 {
    public static void main (String[] Args) {
        Integer miInteger = 0;
        int i = 5;
        miInteger = miInteger.valueOf(i);
        System.out.println ("El valor de miInteger es "+miInteger);
    }
}

Es cierto que hay otros métodos propios de Integer, pero en este caso se estaría hablando concretamente del método valueOf aplicable a distintas clases.

Espero haber aclarado algo. Saludos.
Responsable de departamento de producción aprenderaprogramar.com

betico

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:ERROR EN EJEMPLO CU00670B?
« Respuesta #2 en: 27 de Mayo 2014, 16:25 »
Buenas tardes.

Ante todo muchas gracias por tu rápida respuesta.

Te comento el porqué de lo que te ponía. Realizando el ejercicio propuesto en esa entrega yo puse lo siguiente:

        String entradaUsuario = JOptionPane.showInputDialog ("Introduzca un número:");
    int numero = numero.valueOf(entradaUsuario);


para intentar convertir el String que devuelve el método (y que yo almaceno en entradaUsuario) en un entero. Si no he entendido mal, esa es la forma que se indica en el ejemplo al que me refiero y que coincide con lo que tú me has indicado. El problema es que cuando compilo ese código me aparece el mensaje de error "int cannot be dereferenced" y me marca el valueOf. Sin embargo, si sustituyo esa sentencia por:

        int numero = Integer.valueOf(entradaUsuario);

la compilación va sin problemas y el programa actúa como debe. Lo mismo hay algo que no estoy teniendo en cuenta.

Un saludo y muchas gracias.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:ERROR EN EJEMPLO CU00670B?
« Respuesta #3 en: 27 de Mayo 2014, 17:04 »
Parece que el problema lo estás teniendo porque estás tratando de aplicar un método a una variable de tipo int. Tienes que recordar que los tipos primitivos no tienen métodos, por tanto para poder usar un método sobre un entero el entero tiene que estar declarado como tipo Integer, no puedes declararlo como tipo int. Puede ser de utilidad releer esto: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=419:tipos-de-datos-java-tipos-primitivos-int-boolean-y-objeto-string-array-o-arreglo-variables-cu00621b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Como posible solución en código tendríamos:

Código: [Seleccionar]
import javax.swing.JOptionPane;
public class ejemplo1 {
    public static void main (String[] Args) {
        String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
        Integer miEntero = 0;
        miEntero = miEntero.valueOf(entradaUsuario);
        System.out.println ("El doble del número introducido es: " + 2*miEntero); 
    }
}
Responsable de departamento de producción aprenderaprogramar.com

betico

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:ERROR EN EJEMPLO CU00670B?
« Respuesta #4 en: 27 de Mayo 2014, 17:31 »
Ok. Muchas gracias de nuevo. Ya veo lo que indicas.

En cualquier caso entiendo que la solución que yo daba (Integer.valueOf) también es válida, no? De hecho, puede servir para evitar el tener que crear una variable intermedia para almacenar el valor. En el ejercicio de la entrega 73 yo he hecho lo siguiente para pasar de String a double:

        EntradaDeTeclado entrada = new EntradaDeTeclado();
        circulo.setRadio((double) Integer.valueOf(entrada.getEntrada()));

y parece que funciona correctamente.

Un saludo.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:ERROR EN EJEMPLO CU00670B?
« Respuesta #5 en: 27 de Mayo 2014, 18:35 »
Sí, también es válida si se usa correctamente. Con frecuencia se puede obtener un mismo resultado de distintas maneras. En el caso de Integer.valueOf te devuelve un Integer que convierte el int o el String que recibe como parámetro.
Responsable de departamento de producción aprenderaprogramar.com

 

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