Transformação de binario para decimal

2 respostas
A

Ola , estava tentando fazer um codigo que transforma codigo binario em decimal,porem algo inesperado aconteçeu,olhando para a logica , pareçe tudo certo mas quando é na hora de compilar apareçe um erro, na hora de transfomar de String para Int na linha 16 do segundo codigo.

[url]http://www.raymundodeoliveira.eng.br/binario.html[/url] como se transforma binario em decimal.

apesar de que eu acho tudo desnecessario a partir do momento que meu problema é na conversão que da o seguinte erro.

Digite o binário.
0011
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
2
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at Exercicio05.BintoDec.setBinario(BintoDec.java:53)
	at Exercicio05.BintoDecrun.main(BintoDecrun.java:16)
package Exercicio05;
import java.util.Scanner;
public class BintoDecrun {
	
	public static void main(String[] args) {
		Scanner Input = new Scanner(System.in);
		System.out.println("Digite o binário.");
		
		int BinNumber = Input.nextInt();
		
		String Bin = String.valueOf(BinNumber);
		String[] Binarie = Bin.split("");
		int Casas = Binarie.length - 1;
		BintoDec Binario = new BintoDec();
		
		Binario.setBinario(BinNumber,Binarie,Casas,Bin);
		
		System.out.println(Binario.getDecimal());
		
	}
}
public void setBinario(int valor,String[] array,int casas,String binario) {
		Binario = valor;
		int res = 0;
		String Base;
		int BaseNumber;
		int contador = 0;
		StringBuffer BinarioOriginal = new StringBuffer(binario);
		StringBuffer BinarioInvertido = new StringBuffer(BinarioOriginal.reverse());
		String BinarioemString = String.valueOf(BinarioInvertido);
		String[] array2 = BinarioemString.split("");
		
		System.out.println(casas);
		
		while( contador < casas ) {
			Base = String.valueOf(array2[contador]);//transformar o binario invertido para string
			BaseNumber = Integer.parseInt(Base);//transforma em int
			
			res += (BaseNumber * 2) ^ contador;//aqui eu transformo o binario em decimal normalmente , com a diferença que eu faço invertido. 110 ao inves de 011
			contador++;//para poder transformar um binario de numero ilimitado de casas
		}
		
		
		setDecimal(res);
		
	}
}

obs:se tiver algo errado eu corrijo

2 Respostas

drsmachado

Comece corrigindo pela tua forma de pensar a respeito do link que mencionou.

Teoria dos números é uma parte fundamental para a compreensão do desenvolvimento.
Sem que você entenda o processo de conversão de um número na base 10 para a base 2, por exemplo, fica quase impossível realizar o que está tentando fazer.

Embora existam coisas completamente inúteis dentro da vida acadêmica, esta, definitivamente, não é uma delas.

RiQuInHo_

String n= JOptionPane.showInputDialog(null,"Digite um número Binário : "); decimal = Integer.parseInt(n, 2);//método que transforma String em inteiro, com base definida como 2 JOptionPane.showMessageDialog(null,"Você digitou " + n + ", e seu referente decimal é: "+ decimal);

acho que isto resolve seu caso!

Criado 15 de dezembro de 2011
Ultima resposta 16 de dez. de 2011
Respostas 2
Participantes 3