Este programa recibe un número entero decimal y lo convierte a notación hexadecimal. Hacer esta conversión es relativamente fácil. En el programa se incluyen comentarios de documentación. Una introducción a los números hexadecimales aparece en Esta entrada. Una tabla de equivalencias entre números en notación decimal, binario, octal y hexadecimal, aparece en Ésta página
_____________________________________________________________________________________
Este código debe guardarse con el nombre UsaConvertirHexadecimal.java
import java.util.Scanner; public class UsaConvertirHexadecimal { // Abre clase UsaConvertirHexadecimal public static void main( String args[]) { // Abre main System.out.print("\nEste programa convierte de decimal a "); System.out.print("hexadecimal. \n"); Scanner entrada = new Scanner(System.in); ConvertirHexadecimal miObjeto = new ConvertirHexadecimal(); int numero; System.out.print("\nPor favor introduzca un numero "); System.out.println("y se imprimira su equivalente en Hexadecimal: "); numero = entrada.nextInt(); miObjeto.Hexadecimal( numero ); } // Cierra main } // Cierra clase UsaConvertir
El siguiente código debe guardarse con el nombre ConvertirHexadecimal.java
public class ConvertirHexadecimal { // Abre clase ConvertirHexadecimal // La variable Tamano controla el numero de // simbolos que se requieren para hacer la conversion // Para llevar un registro de los simbolos se usa un // arreglo. Estos se deben guardar porque se van generando // de derecha a izquierda, pero la impresion es de // izquierda a derecha. private int Tamano = 35; private int[] a = new int[Tamano]; ///////////////////////////// // METODO HEXADECIMAL ///////////////////////////// public void Hexadecimal ( int x ) { // Abre metodo Hexadecimal // El arreglo se llena con 0 for ( int i = 0; i < Tamano; i++ ) { // Abre for a[i] = 0; } // Cierra for System.out.print("\nAqui esta el numero en notacion "); System.out.println("hexadecimal: "); int contador = 0; while ( 0 != x ) { // Abre while // Si el numero no es multiplo de 16 // lo cual es lo mas probable (por eso // se coloca primero esta condicion) if ( 0 != x % 16 ) { // Abre if // Se imprime el residuo de la division //Imprimir( x % 16 ); a[contador++] = x % 16; // Ahora x es x - residuo x -= x % 16; // Ahora se divide x entre 16 x /= 16; } // Cierra if // De lo contrario // Esto es, si x es multiplo de 16 else { // Abre else // System.out.print("0"); a[contador++] = 0; //Ahora x es x/16 x /= 16; } // Cierra else } // Cierra while System.out.println("\n"); // El numero en notacion hexadecimal, que se ha // guardado en el arreglo a se manda a imprimir Imprimir(); } // Cierra metodo Hexadecimal /////////////////////////////////// //METODO IMPRIMIR /////////////////////////////////// public void Imprimir( ) { // Abre metodo Imprimir // El arreglo se imprime de la ultima posicion // a la primera. Sin embargo, es muy probable // que las ultimas sean 0. Como estan a la derecha // no es necesario imprimirlos. La variable estatus // inicia con "afuera", lo cual indica que los ceros // no deben imprimirse String estatus = "afuera"; for ( int i = Tamano - 1; i >= 0; i-- ) switch ( a[i] ) { // Abre switch case 0: if ( "adentro" == estatus ) System.out.printf("0"); break; case 1: System.out.printf("1"); estatus = "adentro"; break; case 2: System.out.printf("2"); estatus = "adentro"; break; case 3: System.out.printf("3"); estatus = "adentro"; break; case 4: System.out.printf("4"); estatus = "adentro"; break; case 5: System.out.printf("5"); estatus = "adentro"; break; case 6: System.out.printf("6"); estatus = "adentro"; break; case 7: System.out.printf("7"); estatus = "adentro"; break; case 8: System.out.printf("8"); estatus = "adentro"; break; case 9: System.out.printf("9"); estatus = "adentro"; break; case 10: System.out.printf("A"); estatus = "adentro"; break; case 11: System.out.printf("B"); estatus = "adentro"; break; case 12: System.out.printf("C"); estatus = "adentro"; break; case 13: System.out.printf("D"); estatus = "adentro"; break; case 14: System.out.printf("E"); estatus = "adentro"; break; case 15: System.out.printf("F"); estatus = "adentro"; break; default: System.out.printf("ERROR. EL PROGRAMA ESTA MAL"); break; } // Cierra switch // Es probable que se haya introducido el numero 0 // y en este caso la variable estatus permanecio // como "afuera" y no se imprimio el 0. if ( "afuera" == estatus ) System.out.printf("0"); System.out.println("\n"); } // Cierra metodo Imprimir } // Cierra clase Convertir
Gracias a ti.
ResponderEliminarporque a miObjeto.Hexadecimal( numero ); se le pone .Hexadecimal no entiendo ademas me lo marca mal
ResponderEliminarMira. En main definimos un objeto llamado miObjeto de la clase ConvertirHexadecimal. La línea miObjeto.Hexadecimal(numero) hace referencia al método Hexadecimal de dicha clase. El número, desde luego, es el que se ha de convertir de decimal a hexadecimal. Acabo de copiar y ejecutar de nuevo el programa y a mi no me marca ningún error. Cópialo tal cual aparece y ponle los nombres con los que aparecen las clases: UsaConvertirHexadecimal.java y ConvertirHexadecimal.java
Eliminar