Advertisement
Guest User

Untitled

a guest
Mar 30th, 2015
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. package conversor;
  2.  
  3. import java.lang.StringBuilder;
  4. import java.util.Arrays;
  5. import java.util.Scanner;
  6.  
  7. class Conversor3 {
  8. public static void main(String[] args) {
  9. String numero;
  10. int decimal, action;
  11. Scanner sc = new Scanner(System.in);
  12. Scanner hue = new Scanner(System.in);
  13. do {
  14. System.out.println("Digite '1' para converter decimais -> base 12. Ou digite '2' para converter base 12 -> decimais: ");
  15. action = sc.nextInt();
  16. switch(action) {
  17.  
  18. case 1: System.out.println("Digite o número decimal: ");
  19. decimal = sc.nextInt();
  20. System.out.println("O valor em binário é: "+converteDecimalParaBase12(decimal));
  21. break;
  22.  
  23. case 2: System.out.println("Digite o número na base 12(letras de A-L): ");
  24. numero = hue.nextLine();
  25. System.out.println("O valor em decimal é: "+converteBase12ParaDecimal(numero));
  26. break;
  27.  
  28. default: System.out.println("Ação inválida!\n");
  29. break;
  30. }
  31. } while(action != 1 && action != 2);
  32. }
  33.  
  34. public static String converteDecimalParaBase12(int valor) {
  35. char[] digitos = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'};
  36. int resto;
  37. StringBuilder sb = new StringBuilder();
  38.  
  39. if (valor == 0) {
  40. return "0";
  41. }
  42.  
  43. // enquanto o resultado da divisão por 16 for maior que 0 adiciona o resto ao início da String de retorno
  44. while (valor > 0) {
  45. resto = valor % 12;
  46. valor = valor / 12;
  47. sb.insert(0, digitos[resto]);
  48. }
  49.  
  50. return sb.toString();
  51. }
  52.  
  53. public static int converteBase12ParaDecimal(String valorBase12) {
  54. int valor = 0;
  55. int posicaoCaractere = -1;
  56. char[] digitos = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'};
  57.  
  58. for (int i=valorBase12.length(); i>0; i--) {
  59. posicaoCaractere = Arrays.binarySearch(digitos, valorBase12.charAt(i-1));
  60. valor += posicaoCaractere*Math.pow(12, (valorBase12.length()-i));
  61. }
  62.  
  63. return valor;
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement