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