Tipos de datos

beatriz
31 de Enero del 2005
estoy empezando con java y he creado una clase para calcular potencias. Pido por pantalla la base y el exponente y al introducir 2 y 2 para que salga 4 me sale 8,88178..E84 ¿alguien me puede decir por qué?
Gracias
El codigo es:
import java.io.*;
import java.lang.Math;
public class Potencias {
public static void main (String args []) throws IOException
{ int base, exponente;
double resultado;
int cero = (int) '0';
System.out.println("Introduzca la base: ");
base = System.in.read();
System.in.skip(2);
System.out.println("Introduzca el exponente: ");
exponente = System.in.read();
System.in.skip(2);
resultado = Math.pow((double)base, (double)exponente);
System.out.println(+resultado);
}
}


chuidiang
31 de Enero del 2005
Hola:

System.in.read() lee bytes. Si tecleas un 2, por ejemplo, el lee el byte correspondiente al codigo ascii del 2, que creo que es el 50. Estas elevando 50 a 50 que da mas o menos lo que te sale a ti.

Prueba a leer asi

DataInputStream entrada = new DataInputStream(System.in);

base = entrada.readInt();

Se bueno.

chuidiang
31 de Enero del 2005
He estado mirando y creo que lo que te he dicho tampoco vale. Ese metodo lee cuatro bytes y los convierte a entero.

Supongo que al final no te queda mas remedio que leer la entrada como si fuera una cadena de texto y luego traducirla con Integer.parseInt(cadena);

Se bueno.