Autor Tema: Java ejercicio JOptionPane CU00670B conversion tipos de datos, metodo valueOf.  (Leído 6030 veces)

rubens23

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
    • Ver Perfil
Enunciado:

Citar
El API de Java proporciona herramientas para pedir datos al usuario a través de ventanas. Un ejemplo de ello es el uso de la clase JOptionPane perteneciente al paquete javax.swing.JOptionPane del API Java. El método showInputDialog permite pedir un dato al usuario y almacena su respuesta en un objeto de tipo String. Queremos crear un programa que pida al usuario un número y muestre por pantalla el doble de ese número. Para ello hemos creado este código:

Código: [Seleccionar]
import javax.swing.JOptionPane;
public class ejemplo1 {
    public static void main (String[] Args) {
        String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
        System.out.println ("El doble del número introducido es: " + 2*entradaUsuario); 
    }
}
El problema que tenemos es que nos salta un mensaje de error “operator * cannot be applied to int, java.lang.String”. ¿Qué interpretación haces de este mensaje de error? ¿Cómo se puede corregir el código para que a través de una conversión de tipos se ejecute el programa?


RESPUESTAS

1.- Obviamente no te deja multiplicar un objeto de tipo String.


2.-

Código: [Seleccionar]
package aprender;

import javax.swing.JOptionPane;
public class ejemplo1 {
    public static void main (String[] Args) {
   
        String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
        Integer n = new Integer(entradaUsuario);
        //n = n.valueOf(entradaUsuario);
        System.out.println ("El doble del número introducido es: " + 2*n); 
    }
}
« Última modificación: 24 de Junio 2015, 12:04 por Alex Rodríguez »

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
 Hola rubens23!

Ciertamente, no podemos multiplicar un tipo primitivo (int, double, float, ext) por un tipo Objeto como lo es un String y pretender obtener un buen resultado. Para esto es menester realizar una convercion de tipos tal y como lo has hecho.

Tu codigo es aceptable pero se puede mejorar.

Podrias usar directamente la siguiente sintaxis:
Código: [Seleccionar]
System.out.println ("El doble del número introducido es: " + 2 * new Integer(entradaUsuario));y así evitas tener que declarar la variable Integer n que has creado.

El método valueOf es un método estático, por lo que puedes llamarlo directamente desde la clase Integer, sin la necesidad de crear un objeto (Integer n) de tipo Integer. La sintaxis podria ser la siguiente:
Código: [Seleccionar]
System.out.println ("El doble del número introducido es: " + 2 * Integer.valueOf(entradaUsuario));
Otro método que podríamos usar y obtener igual buenos resultados, es el método
también estático parseInt(String s). La sintaxis podría ser la siguiente:
Código: [Seleccionar]
System.out.println ("El doble del número introducido es: " + 2 * Integer.parseInt(entradaUsuario));
Simplificar nuestro código siempre ha de ser una opción a tomar en cuenta cuando escribimos código, un código claro y corto es preferido ante un código extenso y "confuso", aun cuando ambos códigos funcionen igual.

Saludos!!
« Última modificación: 20 de Junio 2015, 01:06 por Jorge lopez »
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

 

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