Autor Tema: Java. Conversión de tipos de datos (tipado).Método ValueOf(). Ejercicio CU00670B  (Leído 2644 veces)

Chompy129

  • Intermedio
  • ***
  • Mensajes: 130
  • Programar es divertido. :)
    • Ver Perfil
Conversión de tipos de datos en java (tipado). Ejemplos. Método valueOf. Error inconvertible types (CU00670B)

Aquí les dejo el ejercicio:

ENUNCIADO
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

a) No puedes multiplicar un número con una cadena de texto, no tiene lógica. En términos de programación, lanza un error porque los operadores aritméticos (*, /, -, +, %) solo funcionan con variables de tipo primitivo o Integer.

b) Creando una variable tipo Integer. Ejemplo del 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:" );
        Integer i= 0;
        System.out.println ("El doble del número introducido es: " + 2*i.valueOf(entradaUsuario)); 
    }
}


Link de la clase: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=636:conversion-de-tipos-de-datos-en-java-tipado-ejemplos-metodo-valueof-error-inconvertible-types-cu00670b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188


ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Buenos días.
El ejercicio es correcto.

En tu código,podrías cambiar las líneas:
Código: [Seleccionar]
Integer i= 0;
        System.out.println ("El doble del número introducido es: " + 2*i.valueOf(entradaUsuario)); 
por
Código: [Seleccionar]
Integer i = Integer.valueOf(entradaUsuario); // Aquí le cambiamos el tipo String a integer, para poder realizar la operación en la siguiente línea
        System.out.println ("El doble del número introducido es: " + 2*i);

Asi en caso de tener que volver a usar la variable i no tendrías que repetir la instrucción .valueOf(entradaUsuario cada vez que la usaras.

Por ejemplo para recibir el triple del numero y la mitad con tu código sería:
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 i= 0;
        System.out.println ("El doble del número introducido es: " + 2*i.valueOf(entradaUsuario));
         System.out.println ("El triple del número introducido es: " + 3*i.valueOf(entradaUsuario));
        System.out.println ("La mitad del número introducido es: " + i.valueOf(entradaUsuario)/2);
    }
}


que podrías reducirlo a :
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 i = Integer.valueOf(entradaUsuario); // Aquí le cambiamos el tipo String a integer, para poder realizar la operación en la siguiente línea
        System.out.println ("El doble del número introducido es: " + 2*i);
        System.out.println ("El triple del número introducido es: " + 3*i);
        System.out.println ("La mitad del número introducido es: " + i/2);
    }//Cierre del main
}//Cierre de la clase
Un saludo

 

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