Conversão de número de decimal para binário e vice-versa

Java

09/04/2009

Pessoal, Me ajudem, Preciso fazer um programa em Java que converta número de decimal para binário e vice-versa. Apenas comecei o Exe, mas na hora da regra ferrou tudo.... _____________________________________________________________ import javax.swing.*; public class Arley_exe1 { public static void main (String Args[]) { int num,base,qtde; num = Integer.parseInt(JOptionPane.showInputDialog("Entre com o número a ser convertido:")); base = Integer.parseInt(JOptionPane.showInputDialog("Qual é a base do número"+num+"? (2 ou 10)")); if((base==2)||(base==10)) { JOptionPane.showMessageDialog(null,"O número"+num+"(2)="+base+"(10)"); } else { JOptionPane.showMessageDialog(null,+base+ "Não é uma base compatível"); } } } [/u]
Mabertoni

Mabertoni

Curtidas 1

Respostas

Alexandre Viriato

Alexandre Viriato

09/04/2009

[quote="mabertoni"]Pessoal, Me ajudem, Preciso fazer um programa em Java que converta número de decimal para binário e vice-versa. Apenas comecei o Exe, mas na hora da regra ferrou tudo.... _____________________________________________________________ import javax.swing.*; public class Arley_exe1 { public static void main (String Args[]) { int num,base,qtde; num = Integer.parseInt(JOptionPane.showInputDialog("Entre com o número a ser convertido:")); base = Integer.parseInt(JOptionPane.showInputDialog("Qual é a base do número"+num+"? (2 ou 10)")); if((base==2)||(base==10)) { JOptionPane.showMessageDialog(null,"O número"+num+"(2)="+base+"(10)"); } else { JOptionPane.showMessageDialog(null,+base+ "Não é uma base compatível"); } } } [/u]
decimal para binário
  int valor = 2;
  String bin = Integer.toString(valor, 2);
        
  System.out.println("valor: " + valor);
  System.out.println("bin..: " + bin);
binário para decimal
  String valor = "1001";
  int bin = Integer.parseInt(valor, 2);
     
  System.out.println("valor: " + valor);
  System.out.println("bin..: " + bin);
GOSTEI 0
Mabertoni

Mabertoni

09/04/2009

Cara, Mas como coloco no meu programa esta String, voce pode me mostrar? Valew. Abraço.
GOSTEI 0
Daniel Martins

Daniel Martins

09/04/2009

É só colar o código lá dentro :mrgreen:
GOSTEI 0
Mabertoni

Mabertoni

09/04/2009

Daniel, Cara, colei mas nao rodou, mudei as variáveis(nomes) e colei, nao rodou, voce pode me mostrar como. Tente compilar e verá. Abraço.
GOSTEI 0
Amadeu Filho

Amadeu Filho

09/04/2009

assim funciona?
 import javax.swing.*;

public class Arley_exe1

{
	public static void main (String Args[])
	
	{
		int num,base,qtde;
		
		
		num = Integer.parseInt(JOptionPane.showInputDialog("Entre com o número a ser convertido:"));
		base = Integer.parseInt(JOptionPane.showInputDialog("Qual é a base do número"+num.toString()+"? (2 ou 10)"));
		
		
		if(base==2)
		{
			String bin = Integer.toString(num, 2);
			JOptionPane.showMessageDialog(null,"O número"+num.toString()+"(2) na base (10) é " + bin);
		}
		else
		{
			if(base == 10)
			{
				String bin = Integer.toString(num, 2);
				JOptionPane.showMessageDialog(null,"O número"+num.toString()+"(10) na base (2) é " + Integer.parseInt(num, 2).toString());
			}
			else
			{
				JOptionPane.showMessageDialog(null,+base.toString()+ "Não é uma base compatível");
			}
		}
	
	}
}
GOSTEI 0
Daniel Martins

Daniel Martins

09/04/2009

Hmmm... Então cole a mensagem de erro que deu.. fica mais fácil de saber o que fazer para resolvê-lo :P falou!
GOSTEI 0
Mabertoni

Mabertoni

09/04/2009

Pessoal, Á detalhe, este programa tenho que rodar qts vezes quiser, tipo assim digite o número, escolha 2 ou 10, enquanto não apertar cancel, ele vai ficar pedindo para digitar, no final pede pra printar na tela, entendeu? Segue o exercício e os erros abaixo: import javax.swing.*; public class Arley_exe1 { public static void main (String Args[]) { int num,base,qtde; num = Integer.parseInt(JOptionPane.showInputDialog("Entre com o número a ser convertido:")); base = Integer.parseInt(JOptionPane.showInputDialog("Qual é a base do número"+num.toString()+"? (2 ou 10)")); if(base==2) { String bin = Integer.toString(num, 2); JOptionPane.showMessageDialog(null,"O número"+num.toString()+"(2) na base (10) é " + bin); } else { if(base == 10) { String bin = Integer.toString(num, 2); JOptionPane.showMessageDialog(null,"O número"+num.toString()+"(10) na base (2) é " + Integer.parseInt(num, 2).toString()); } else { JOptionPane.showMessageDialog(null,+base.toString()+ "Não é uma base compatível"); } } } } [b] Segue o erro abaixo:[/b] C:\Documents and Settings\a395070\Desktop\Arley_exe1.java:14: int cannot be dereferenced base = Integer.parseInt(JOptionPane.showInputDialog("Qual é a base do número"+num.toString()+"? (2 ou 10)")); ^ C:\Documents and Settings\a395070\Desktop\Arley_exe1.java:20: int cannot be dereferenced JOptionPane.showMessageDialog(null,"O número"+num.toString()+"(2) na base (10) é " + bin); ^ C:\Documents and Settings\a395070\Desktop\Arley_exe1.java:27: int cannot be dereferenced JOptionPane.showMessageDialog(null,"O número"+num.toString()+"(10) na base (2) é " + Integer.parseInt(num, 2).toString()); ^ C:\Documents and Settings\a395070\Desktop\Arley_exe1.java:27: cannot resolve symbol symbol : method parseInt (int,int) location: class java.lang.Integer JOptionPane.showMessageDialog(null,"O número"+num.toString()+"(10) na base (2) é " + Integer.parseInt(num, 2).toString()); ^ C:\Documents and Settings\a395070\Desktop\Arley_exe1.java:31: int cannot be dereferenced JOptionPane.showMessageDialog(null,+base.toString()+ "Não é uma base compatível"); ^ 5 errors Process completed.
GOSTEI 0
Adriano Baptista

Adriano Baptista

09/04/2009

Aproveitando uma dúvida que tem haver um pouco com o topico Como eu poderia fazer para converter uma string em numeros inteiros? Mas verificando se a pessoa inseriu somente numeros, caso tenha inserido algo diferente de numeros, retornar a mensagem para ela inserir um numero válido sem o programa apresentar erro. O codigo acima nao tem essa checagem, se a pessoa inserir abc o programa vai dar pau...
GOSTEI 0
Gustavolaguna

Gustavolaguna

09/04/2009

import javax.swing.JOptionPane; public class Teste{ public static void main(String args[]){ String input = ""; int number = 0; boolean continuar = true; while( continuar ){ input = JOptionPane.showInputDialog(null,"Digite um numero inteiro: "); try{ number = Integer.parseInt(input); JOptionPane.showMessageDialog( null, "Voce digitou o numero: " + number ); continuar = false; } catch( NumberFormatException e ) {} } } }
GOSTEI 0
Gustavolaguna

Gustavolaguna

09/04/2009

import javax.swing.JOptionPane;

public class Teste{

	public static void main(String args[]){

		String input = "";
		int number = 0;
		boolean continuar = true;
		while( continuar ){
			input = JOptionPane.showInputDialog(null,"Digite um numero inteiro: ");
			try{
				number = Integer.parseInt(input);
				JOptionPane.showMessageDialog( null, "Voce digitou o numero: " + number );
				continuar = false;	
			}
			catch( NumberFormatException e ) {}
		}
	}
}
GOSTEI 0
Mabertoni

Mabertoni

09/04/2009

Não fugindo do assunto está embaçado pra fazer, só sei que tenho que usar a funcao Charat,e o Matchpow. putz nem sei onde começar... Valew pelas dicas... Se alguém conseguir me ajudar me fale. Abraços. import javax.swing.*; public class Arley_exe1 { public static void main (String Args[]) { int num,base,qtde; num = Integer.parseInt(JOptionPane.showInputDialog("Entre com o número a ser convertido:")); base = Integer.parseInt(JOptionPane.showInputDialog("Qual é a base do número"+num.toString()+"? (2 ou 10)")); if(base==2) { String bin = Integer.toString(num, 2); JOptionPane.showMessageDialog(null,"O número"+num.toString()+"(2) na base (10) é " + bin); } else { if(base == 10) { String bin = Integer.toString(num, 2); JOptionPane.showMessageDialog(null,"O número"+num.toString()+"(10) na base (2) é " + Integer.parseInt(num, 2).toString()); } else { JOptionPane.showMessageDialog(null,+base.toString()+ "Não é uma base compatível"); } } } }
GOSTEI 0
Mabertoni

Mabertoni

09/04/2009

HELP ME, Estou quase lá olhem o exe abaixo: de decimal para binário está OK, apenas de binário pra decimal que está dando erro. Segue o exe abaixo: import javax.swing.*; public class Arley_exe1 { public static void main (String Args[]) { int num,base; num = Integer.parseInt(JOptionPane.showInputDialog("Entre com o número a ser convertido:")); base = Integer.parseInt(JOptionPane.showInputDialog("Qual é a base do número"+num+"? (2 ou 10)")); if(base==2) { String bin=Integer.toString(num, 2); JOptionPane.showMessageDialog(null,"O número " +num+ "(10) na base(2)é ? " +bin); } else { if(base == 10) { String bin =Integer.toString(num, 1001); JOptionPane.showMessageDialog(null,"O número"+num+"(2) na base (10) é "+bin); } else { JOptionPane.showMessageDialog(null,+base+ "Não é uma base compatível"); } } } } Me ajudem ... Valew. Marcel.
GOSTEI 0
Gustavolaguna

Gustavolaguna

09/04/2009

Seguinte, olhe o primeiro post que voce achará o seu erro. Para passar de decimal para binário voce usa:
int valor = 2;
  String bin = Integer.toString(valor, 2);
Nesse caso, voce passa valor como um inteiro e usa a variavel bin como String para armazenar o resultado de Integer.toString(valor,2) e de binario para decimal:
String valor = "1001";
  int bin = Integer.parseInt(valor, 2);
Agora, é o oposto. Voce passa o valor como sendo um String e usa a variavel bin como inteiro para armazenar o resultado de Integer.parseInt(valor,2) Ai vai o código:
import javax.swing.*;

public class Teste{
    public static void main (String Args[]){
        int num,base;


        num = Integer.parseInt( JOptionPane.showInputDialog( "Entre com o número a ser convertido:" ) );
        base = Integer.parseInt( JOptionPane.showInputDialog( "Qual é a base do número"+num+"? (2 ou 10)" ) );

        if(base==2){
            num += ""; // mudando para String.
            int bin = Integer.parseInt( num, 2 );
            JOptionPane.showMessageDialog( null, "O número " + num + "(10) na base(2)é ? " + bin );
        }
        else{
            if(base == 10){
                String bin = Integer.toString( num, 10 );
                JOptionPane.showMessageDialog( null , "O número" + num + "(2) na base (10) é " + bin );
            }
            else{
                JOptionPane.showMessageDialog( null , base + " Não é uma base compatível" );
            }
        }
    }
} 
Aqui funcionou.
GOSTEI 0
Mabertoni

Mabertoni

09/04/2009

Segue os erros abaixo: Na conversão de decimal para binário está OK, o problema é quando voce tenta converter de binário para decimal.... Segue os erros do arquivo que voce enviou... C:\Arquivos de programas\Xinox Software\JCreator LE\MyProjects\Teste\Teste.java:13: inconvertible types found : java.lang.String required: int num += ""; // mudando para String. ^ C:\Arquivos de programas\Xinox Software\JCreator LE\MyProjects\Teste\Teste.java:14: cannot resolve symbol symbol : method parseInt (int,int) location: class java.lang.Integer int bin = Integer.parseInt( num, 2 ); ^ 2 errors Process completed.
GOSTEI 0
Gustavolaguna

Gustavolaguna

09/04/2009

Realmente eu bobiei na concatenação, dessa vez concatei na hora de passar o valor para o método.
import javax.swing.*;

public class Teste{
    public static void main (String Args[]){
        int num,base;


        num = Integer.parseInt( JOptionPane.showInputDialog( "Entre com o número a ser convertido:" ) );
        base = Integer.parseInt( JOptionPane.showInputDialog( "Qual é a base do número"+num+"? (2 ou 10)" ) );

        if(base==2){
            int bin = Integer.parseInt( num + "", 2 );
            JOptionPane.showMessageDialog( null, "O número " + num + "(10) na base(2)é ? " + bin );
        }
        else{
            if(base == 10){
                String bin = Integer.toString( num, 10 );
                JOptionPane.showMessageDialog( null , "O número" + num + "(2) na base (10) é " + bin );
            }
            else{
                JOptionPane.showMessageDialog( null , base + " Não é uma base compatível" );
            }
        }
    }
} 
GOSTEI 0
Mabertoni

Mabertoni

09/04/2009

Então, O exe esta compilando e rodando normalmente, mas com erro nos calculos: Obs: na linha int bin = Integer.parseInt( num + "", 2 ); Se vc usar o comando String bin = Integer.toString (num, 2), o programa roda o número correto exe: coloquei 256 e escolhi a base 2 para gerar um número binário e gerou corretamente (100000000). O problema acredito que esteja nesta linha String bin = Integer.toString( num, 10 ); para gerar de binário para decimal digitei o mesmo valor que gerou o binário e escolhi para gerar um decimal escolhi base 10 e corretamente seria aparecer 256, mas está me repetindo o número.... Sei que tem uma regra, mas nao consigo fazer... Faça um teste e me fale.... Gustavo, ate o momento, Obrigado. Marcel. .
GOSTEI 0
Mabertoni

Mabertoni

09/04/2009

Detalhe, Esta regra que como vimos la acima no começo do assunto que gere de bin para dec... String valor = "1001"; int bin = Integer.parseInt(valor, 2); Mas onde coloca-la? Já joguei esta String e nao gerou o num correto e agora? Abraço;
GOSTEI 0
Claudio Souza

Claudio Souza

09/04/2009

classe para conversoes em java que funciona public class Conversoes { public String decimalParaBinario(int b){ String c =(Integer.toBinaryString(b)); return c; } public String decimalParaOctal(int o){ String c =Integer.toOctalString(o); return c; } public String decimalParaHexa(int h){ String c = Integer.toHexString(h); return c; } public String hexadecimalParaDecimal(String h){ int d = Integer.parseInt(h, 16); String result = String.valueOf(d); return result; } public String octalParaDecimal(String o){ int d = (Integer.parseInt(o, 8)); String result = String.valueOf(d); return result; } public String binarioParaDecimal(String b){ int d = (Integer.parseInt(b, 2)); String result = String.valueOf(d); return result; } }
GOSTEI 0
POSTAR