Problemass conn vectores

Hola me puedes decir si también de esta forma se puede hallar de binario a decimal este es mi código pero no encuentro el problema ademas soy muy novato en arrays
int j=3,suma=0;
int Binario[]=new int[j];
int Bin[]=new int[j];
int n=0; //decimal = decimal + (Vector * (2^i))
System.out.println("digite numero en binario solo 1 o 2");
for(n=0;n<j;n++)
{
System.out.println("Digite: ");
Binario[n]=Conv.nextInt();
}
int b=0,m=0;
for(n=j-1;n>=2;n--)
{
while(b<=m)
{
Binario[n]=n*2^b;
suma=suma+Binario[n];
b++;
}
m++;
}
System.out.println("total:>>: "+Binario[2]);}}

1 Respuesta

Respuesta
1
Al igual que con el paso de decimal a binario, yo no recomendaría usar arrays de longitud predefinida, puesto que limitas mucho al programa. Procura siempre dar una solución lo más generalista posible, lo que te permitirá reutilizar el código que hagas.
La solución que te propongo es la siguiente:
Scanner Conv=new Scanner(System.in);
String binario;
System.out.println("digite numero en binario (ceros y unos)");
System.out.println("Digite: ");
binario=Conv.next();
int len = binario.length();
int multiplicador = 1;
int valorParcial;
int valorTotal = 0;
for(int i=(len-1);i>=0;i--){
      valorParcial=Integer.parseInt(Character.toString(binario.charAt(i)));
      valorParcial *= multiplicador;
      valorTotal += valorParcial;
      multiplicador *= 2;
}
System.out.println("total:>>: "+ valorTotal);
Como verás, recojo un String de la consola, y me voy moviendo por los caracteres del String en modo inverso. Convierto el char en un entero y lo multiplico por el factor de multiplicación que corresponde a la posición. El valor total del número lo voy acumulando en otra variable. Con esta solución, puedes meter cualquier número binario. No he incluido el código para comprobar que el número introducido sea binario. Eso te lo dejo a ti ;-)
Un saludo, y como antes, no te olvides de valorar mi respuesta :-)
Carlos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas