Codigo binario

4 respostas
G
public class boom

{

public static void main(String args[])

{

int d;

String[] b = new String[100];

d = 8;

int c;

while((d/2)>1)

{

for(int i = 0; i< b.length; i ++)

{

b[i] = b[i] + d % 2;

d = d / 2;

}

}

System.out.println(b);

}

}

o que está errado neste codigo.
sendo que 8 em binario é 1000.
na compilação da a seguinte mensagem:
[Ljava.lang.String;@ba34f2;
Alguem sabe onde está o erro.
no teste de mesa consta assim:

8 / 2 sobra 0;

4 / 2 sobra 0;

2 / 2 sobra 0;

1 / 2 sobra 1;

 que no meu programa mostra so os tres zeros e o um nem aparece

tem jeito de arrumar isso?

4 Respostas

C

nao seria pelo fato de vc estar utilizando um array de string para manipular numeros, e issu estaria gerando alguma incompatibilidade
eh uma ipotese

I
{
  	public static void main(String args[])
  	  {
  	  int d;
  	  String[] b = new String[100];
  	  d = 8;
  	  int c;
  	  while((d/2)>1)
  	   {
  	   	for(int i = 0; i< b.length; i ++)
  	   	{
  	   	b[i] += "" + d % 2;
  	   	d = d / 2;
  	   }
  	   }
  	   System.out.println(b);
     }
  }

Tenta assim.

F

Na ultima alteração d=2, (2/2)>1 = false. Por isso não imprime o 1.
Outra coisa, não entendi o porque do array de Strings ao invés de uma string simples. não seria mais facil algo do tipo:

public class boom
{
public static void main(String args[])
{
int d;
String b = new String();
d = 8;
int c;
int i=0;
while((d/2)>=1 )
{
    b = d % 2 + b ;
    d = d / 2;
}

b =  d + b;

    System.out.println(b);
}

}
P

Oh amigo… :grin:
Aquele teu System.out.println(b); deve estar imprimindo o endereço de memória da primeira posição do vetor de strings… Pra fazer o tira-teima, tenda mostrar ele num for, posição a posição…

public class Teste { public static void main(String args[]) { int d = 8; int[] b = new int[100]; int i = 0; int aux = d; while(aux>0) { b[i++] = aux % 2; aux /= 2; } System.out.print("O numero decimal "+d+" corresponde ao binario "); for(i--; i>=0 ; i--){ System.out.print(b[i]); } } }

Criado 7 de março de 2005
Ultima resposta 7 de mar. de 2005
Respostas 4
Participantes 5