Me ajudem por favor!
Não estou conseguindo executar meu prog.
Ele nao passa de binario para decimal de jeito nenhum.
Alguem poderia me ajudar???
Segue código…
// Código
// Pacotes de extensão de java
import javax.swing.JOptionPane;
public class BinarioDecimal{
// inicia o método main
public static void main (String args [])
{
int i, num2, num1; // declara variáveis int
String xVal, aux; // declara variáveis String
// inicializa variáveis
num2 = 0;
num1 = 0;
// Entrada de dados
xVal = JOptionPane.showInputDialog(
"Digite o número binário");
// armazena a variável xVal em aux
aux = new String (xVal);
// retorna o tamanho da variável aux
num2 = aux.length();
// laço para cálculo
for (i = 0; i < num2; i++) {
num1 = num1 + (aux.charAt(i) * (2 ^ i));
}
// exibe os resultados
JOptionPane.showMessageDialog (null, "O resultado é " + num1 );
// fim do programa
System.exit(0);
} // fim do método main
Olá viniciusst. Algumas observações sobre seu programa:
aux = new String (xVal);
1 - Não há motivo para criar uma cópia do String.
for (i = 0; i < num2; i++) {
num1 = num1 + (aux.charAt(i) * (2 ^ i));
}
2 - Como Schuenemann falou, as potências aumentam da esquerda para a direita.
3 - O valor retornado por charAt não vai ser 0 ou 1, mas sim seu código unicode, para obter os 0’s e 1’s seria necessário subtrair o caractere ‘0’.
4 - O operador ^ é um XOR binário e não têm nada a ver com exponenciação.
Isso funcionaria:
import javax.swing.JOptionPane;
public class BinarioDecimal {
public static void main (String args []) {
int resultado = 0;
String entrada = JOptionPane.showInputDialog("Digite o número binário");
for (int i = entrada.length() - 1; i >= 0; i--) {
resultado += (entrada.charAt(i) - '0') * (1 << (entrada.length() - 1 - i));
}
JOptionPane.showMessageDialog (null, "O resultado é " + resultado);
}
}
Outra opção (bem mais simples) seria usar o método parseInt da classe Integer:
public static int parseInt(String s, int radix) throws NumberFormatException