Conversão de número de decimal para binário e vice-versa
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
Curtidas 1
Respostas
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);
String valor = "1001";
int bin = Integer.parseInt(valor, 2);
System.out.println("valor: " + valor);
System.out.println("bin..: " + bin);
GOSTEI 0
Mabertoni
09/04/2009
Cara,
Mas como coloco no meu programa esta String, voce pode me mostrar?
Valew.
Abraço.
GOSTEI 0
Daniel Martins
09/04/2009
É só colar o código lá dentro :mrgreen:
GOSTEI 0
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
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
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
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
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
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
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
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
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
09/04/2009
Seguinte, olhe o primeiro post que voce achará o seu erro.
Para passar de decimal para binário voce usa:
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:
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:
Aqui funcionou.
int valor = 2; String bin = Integer.toString(valor, 2);
String valor = "1001"; int bin = Integer.parseInt(valor, 2);
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" );
}
}
}
} GOSTEI 0
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
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
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
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
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