Java - BInario a decimal??

 
Vista:

BInario a decimal??

Publicado por Jesusr (2 intervenciones) el 18/12/2008 03:45:05
Tengo una tarea para la escuela;
pasar numeros binarios que el usuario introdusca a decimal, no puedo usar funciones nativas de java (Integer.ParseInt(variable,2)).

Tengo una idea de como hacerlo, aqui dejo el codigo que he hecho:

menu=JOptionPane.showInputDialog("Ahora introduce el numero binario:");
double num=0;
while((menu.length()-1)!=v2)
{
if(menu.charAt(v2)==49)
{
num=num+1*Math.pow(2,v2);
v2++;
}
else if(menu.charAt(v2)==48)
{v2++;}
else
{JOptionPane.showMessageDialog(null, "El numero que introduciste no es binario!");}
}
JOptionPane.showMessageDialog(null, "EL resultado es:"+ num);
De hecho funciona con numeros binarios como 101 o 10101, pero tiene un problema:
CUando se introduce un numero como 100 comienza a pmultiplicar de forma inversa (1 le asigna valor de 1 y salta dos veces el primer if), alguien que me ayude por favor!!!!
PD las variables esta bien inicializadas, no puse todo el programa debido a que el programa pasa a binario octal y hexadecimal y de vuelta a decimal, todo lo demas me sirve bien.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:BInario a decimal??

Publicado por e_Brian (4 intervenciones) el 18/12/2008 05:02:29
No entiendo muy bien tu codigo esta un poco desprolijo, que significa v2 ?

Fijate si te entendes este codigo y te puede servir, si no entens algo pregunta. Si podes reformular la pregunta y escribir el codigo un poco mas claro veo si puedo ayudarte !

import java.io.*;

public class BinDec
{
String numero;
int len;
double potencia;
double suma=0;

public BinDec()
{

try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Ingrese numero");
numero = br.readLine();
len = numero.length();

if (numero.length()>1)
{

for(int i=0;i<numero.length();i++)
{
len = len - 1;
char num = numero.charAt(i);
if(num=='1')
{
potencia = Math.pow(2,len);
double y = 1*potencia;
suma = suma + y;
}

}

System.out.println("Su numero en decimal es: "+suma);
}
else
{
System.out.println("Su numero en decimal es: "+numero.charAt(0));
}
}
catch(Exception ex)
{
System.out.println("Error");
}

}

public static void main(String[] arg)
{
new BinDec();
}

}

SALUDOS!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BInario a decimal??

Publicado por Jesusr (2 intervenciones) el 18/12/2008 06:11:14
Gracias por contestar, ya lo he solucionado:

case 4:
menu=JOptionPane.showInputDialog("Ahora introduce el numero binario:");
num=0;
v2=menu.length()-1;
v1=0;
while(v2 >= 0)
{
if(menu.charAt(v2)==49)
{
num += 1*Math.pow(2,v1);
v2--;v1++;
}
else if(menu.charAt(v2)==48)
{
v2--;v1++;
}
else
{JOptionPane.showMessageDialog(null, "El numero que introduciste no es binario!");}
}
JOptionPane.showMessageDialog(null, "EL resultado es:"+ num);
break;

funciona perfectamente, las variables son del sigueiente tipo y tienen los siguientes valores antes de que el codigo se ejecute:

int v2=0
String menu=" "
int v1=0
int num=0

gracias por contestar = )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BInario a decimal??

Publicado por Julio (1 intervención) el 11/10/2011 02:10:44
Una pregunta sobre el programa, xk es = a 49 y 48, y cuando modifico esos valores no manda el resultado correcto, y si me pudieras dar una breve explicacion sobre ese programa xk, saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar