Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: betico 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.
-
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:
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.
-
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.
-
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:
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);
}
}
-
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.
-
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.