Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package conversor;
- import java.lang.StringBuilder;
- import java.util.Arrays;
- import java.util.Scanner;
- class Conversor3 {
- public static void main(String[] args) {
- String numero;
- int decimal, action;
- Scanner sc = new Scanner(System.in);
- Scanner hue = new Scanner(System.in);
- do {
- System.out.println("Digite '1' para converter decimais -> base 12. Ou digite '2' para converter base 12 -> decimais: ");
- action = sc.nextInt();
- switch(action) {
- case 1: System.out.println("Digite o número decimal: ");
- decimal = sc.nextInt();
- System.out.println("O valor em binário é: "+converteDecimalParaBase12(decimal));
- break;
- case 2: System.out.println("Digite o número na base 12(letras de A-L): ");
- numero = hue.nextLine();
- System.out.println("O valor em decimal é: "+converteBase12ParaDecimal(numero));
- break;
- default: System.out.println("Ação inválida!\n");
- break;
- }
- } while(action != 1 && action != 2);
- }
- public static String converteDecimalParaBase12(int valor) {
- char[] digitos = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'};
- int resto;
- StringBuilder sb = new StringBuilder();
- if (valor == 0) {
- return "0";
- }
- // enquanto o resultado da divisão por 16 for maior que 0 adiciona o resto ao início da String de retorno
- while (valor > 0) {
- resto = valor % 12;
- valor = valor / 12;
- sb.insert(0, digitos[resto]);
- }
- return sb.toString();
- }
- public static int converteBase12ParaDecimal(String valorBase12) {
- int valor = 0;
- int posicaoCaractere = -1;
- char[] digitos = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'};
- for (int i=valorBase12.length(); i>0; i--) {
- posicaoCaractere = Arrays.binarySearch(digitos, valorBase12.charAt(i-1));
- valor += posicaoCaractere*Math.pow(12, (valorBase12.length()-i));
- }
- return valor;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement