Algoritmo - JAVA [ajuda]

Meydson

Member
Registrado
Boa tarde, tô estudando Java Básico e após ver um pouco de teoria, estou fazendo exercícios. Travei em um exercício e gostaria de ajuda. O exercício em questão:

"Parte 1 do problema:

Faça um método que converta um número em Hexadecimal (1 caracter) em um numero binário (4 caracteres em uma String).

Ex: entrada: "D" saída: "1101".

O método deve receber como parâmetro um dado do tipo char e retornar uma String. Para facilitar, pode implementar a tabela de conversão hex-> bin (16 valores).

Parte 2 do problema:

Faça um programa (utilizando o método em (a)) que converta um número Hexadecimal de 4 alagarismo (em uma String) para um número binário de 16 algarismos (em uma String).

Obs: fazer uma estrutura de repetição para ler, um por um, os 4 algarismos do número hexadecimal. Para ler apenas um caracter de uma String, utilizar o método String.charAt(índice).

Ex: string x = "abcde";
System.out.printf ("%s", x.charAt(2);

Imprimirá na tela: C"

Isso foi o que consegui até então:

Java:
 import java.util.Scanner;
class Main {
public static void main(String[] args) {
//char D;
//int num = (Integer.parseInt("D", 16));
//System.out.println(Integer.toBinaryString(num));
Scanner teclado = new Scanner(System.in);
System.out.printf("Informe um número em hexadecimal: ");
String numeroHexaDecimal = (teclado.nextLine());
String z = letras_b_e_c(numeroHexaDecimal.charAt(0));
System.out.print(z);
}
static String letras_b_e_c(char numeroHexa){
String numeroBinario = (String) letras_b_e_c(numeroHexa);

switch(numeroHexa){
case 'A': numeroBinario = "1010";
break;
case 'B': numeroBinario = "1011";
break;
case 'C': numeroBinario = "1100";
break;
case 'D': numeroBinario = "1101";
break;
case 'E': numeroBinario = "1110";
break;
case 'F': numeroBinario = "1111";
break;
System.out.printf(numeroBinario);

}
}
}
 
Vamos por parte, o sistema hexadecimal possui 16 algarismo, indo do 0 ao F. Foi dado a opção de implementar uma tabela de conversão, ou seja cria um metodo que recebe um numero hexa e retorna ele em binario.

Esse teu switch poderia ficar dentro do metodo e mapearia os 16 numeros hexas e não somente do A ao F.

Essa primeira parte estando correta, tu vai fazer um segundo metodo que vai receber um numero hexa de 4 algarismo e converte pra binario.

Como foi falado tu vai fazer um laço de repetição que vai ler o primeiro numero, esse numero tu joga no primeiro metodo e com isso recebe o binario, e vai fazendo isso até ler os 4 digitos.

Tu vai precisar saber fazer um metodo (função) pra converter um numero em binario e um metodo pra converter 4 numeros em binario.
 
Vamos por parte, o sistema hexadecimal possui 16 algarismo, indo do 0 ao F. Foi dado a opção de implementar uma tabela de conversão, ou seja cria um metodo que recebe um numero hexa e retorna ele em binario.

Esse teu switch poderia ficar dentro do metodo e mapearia os 16 numeros hexas e não somente do A ao F.

Essa primeira parte estando correta, tu vai fazer um segundo metodo que vai receber um numero hexa de 4 algarismo e converte pra binario.

Como foi falado tu vai fazer um laço de repetição que vai ler o primeiro numero, esse numero tu joga no primeiro metodo e com isso recebe o binario, e vai fazendo isso até ler os 4 digitos.

Tu vai precisar saber fazer um metodo (função) pra converter um numero em binario e um metodo pra converter 4 numeros em binario.
Aí que tá, eu mexo pra lá e pra cá e não consigo fazer funcionar. Não tô sabendo implementar.
Como ficaria esse código com as alterações sugeridas por vc?
 
Cara é o básico de java, cria um metodo que vai receber um valor e vai retornar outro, é o básico mesmo.

Dai dentro desse metodo tu coloca esse switch indo do 0 ao F.
 
Já que você pode implementar "uma tabela de conversão", faz um map (também chamado de dicionário), vai facilitar tua vida
E como o @JEDI falou, a tabela deve conter todos os números, não só as letras de 'A' a 'F'.

um map é algo assim...
Java:
HashMap<Char, String> tabela = new HashMap();
tabela.put("0", "0000");
tabela.put("1", "0001");
// etc, só botar todos os valores no mapa

Aí tu usa ele pra obter o valor que quer vindo do numeroHexa
Tipo assim
Java:
String numeroBinario = tabela.get(numeroHexa);
 

Users who are viewing this thread

Voltar
Topo