Foro de elhacker.net

Programación => Java => Mensaje iniciado por: fran10 en 21 Enero 2015, 02:10 am



Título: Problema con conversión de tipo long a int
Publicado por: fran10 en 21 Enero 2015, 02:10 am
Buenas noches.

Tengo una duda con este ejercicio y es que no entiendo mucho de java y no encuentro el posible error

El enunciado es:

P1. Escriba un programa que pida al usuario dos números enteros. Una vez obtenidos los dos números, el programa mostrará al
usuario una serie de opciones numeradas (un menú), y esperará que el usuario teclee la opción deseada. Entre las opciones del
menú se le deberán ofrecer al usuario las siguientes:
1. Dividir los números.
2. Multiplicar los números.
3. Sumar los números.
4. Restar los números.

Código
  1. public static void main(String[] args) {
  2.        // TODO code application logic here
  3.        double a,b;
  4.        System.out.println("Introduce el primer numero");
  5.        a = (double) IO.readNumber();
  6.        System.out.println("Introduce el segundo numero");
  7.        b = (double) IO.readNumber();
  8.  
  9.        int opcion;
  10.        double division, multi, suma, resta;
  11.        System.out.println("Introduzca 1 para dividir, 2 para multiplicar, 3 para sumar y 4 para restar");
  12.        opcion = IO.readNumber();
  13.        switch(opcion){
  14.  
  15.            case 1:
  16.            {
  17.                double division= double a/b;
  18.                System.out.println("el resultado de la division es" +division);
  19.                break;
  20.            }
  21.            case 2:
  22.            {
  23.                double multiplicacion= double a*b;
  24.                System.out.println("el resultado de la division es" +multiplicacion);
  25.                break;
  26.            }
  27.            case 3:
  28.            {
  29.                double suma= double a+b;
  30.                System.out.println("el resultado de la suma es" +suma);
  31.                break;
  32.            }
  33.            case 4:
  34.            {
  35.                double resta= double a-b;
  36.                System.out.println("el resultado de la resta es" +resta);
  37.                break;
  38.            }
  39.            default:System.out.println("No has introducido una opcion correcta");
  40.        }
  41.    }
  42.  
  43. }

Al realizar el ejercicio me da el siguiente error:
"Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - incompatible types: possible lossy conversion from double to int"

Muchas gracias


Título: Re: Problema con conversión de tipo long a int
Publicado por: Usuario Invitado en 21 Enero 2015, 02:40 am
Primero declaras variables como division, multiplicacion, suma y resta pero nunca las utilizas. Dentro del switch estás creando éstas mismas variables. IO, supongo que es una clase que la has creado y has implementado métodos estáticos como el que has usado readNumber(). Yo lo he hecho con el clásico Scanner porque no sé si tu método estará bien programado.


Código
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. class HelloWorld
  6. {
  7.    public static void main(String[] args) {
  8.  
  9.           Scanner t = new Scanner(System.in);
  10.  
  11.           System.out.println("Introduce el primer numero");
  12.           double a = t.nextDouble();
  13.           System.out.println("Introduce el segundo numero");
  14.           double b =t.nextDouble();
  15.  
  16.           System.out.println("Introduzca 1 para dividir, 2 para multiplicar, 3 para sumar y 4 para restar");
  17.           int opcion = t.nextInt();
  18.  
  19.           switch(opcion){
  20.  
  21.               case 1:
  22.               {
  23.                   double division= (double) a/b;
  24.                   System.out.println("el resultado de la division es " +division);
  25.                   break;
  26.               }
  27.               case 2:
  28.               {
  29.                   double multiplicacion= a*b;
  30.                   System.out.println("el resultado de la division es " +multiplicacion);
  31.                   break;
  32.               }
  33.               case 3:
  34.               {
  35.                   double suma= a+b;
  36.                   System.out.println("el resultado de la suma es " +suma);
  37.                   break;
  38.               }
  39.               case 4:
  40.               {
  41.                   double resta= a-b;
  42.                   System.out.println("el resultado de la resta es " +resta);
  43.                   break;
  44.               }
  45.               default: System.out.println("No has introducido una opcion correcta");
  46.           }
  47.       }
  48.  
  49. }


Título: Re: Problema con conversión de tipo long a int
Publicado por: fran10 en 21 Enero 2015, 03:05 am
Buenas amigo, yo es que se algo de lenguaje c a nivel básico y por eso lo hice así.

Entonces si bien he entendido, los números "a"y "b" tampoco debo incializarlos ¿verdad?

IO es una clase que nos dan en la escuela que la debemos usar según nos han dicho para cuando tengamos que introducir un valor por teclado poder leerlo.

Una dudilla que me surge al ver su programa, ¿por qué en la división introduce (double)a/b y en los demás como la multiplicación, suma y resta no es necesario?

Muchas gracias  :)


Título: Re: Problema con conversión de tipo long a int
Publicado por: Usuario Invitado en 21 Enero 2015, 03:20 am
Sólo por compatibilidad, vayan a cambiar a y b a int, por lo que la división solo devolvería la parte entera. Si ambos operandos son reales como en este caso, no es necesario hacer el casting.