lunes, 15 de agosto de 2016

Convertir un carácter (char) en código Ascii y de código Ascii a carácter (char)

Hola a todos!!! El programa que vamos a crear va a ser capaz de pasar un carácter (tipo char) al código Ascii y viceversa, es decir, insertar el código Ascii y obtener el carácter. Para ello el programa contará con la opción de que el usuario a través de la entrada por teclado, elija entre obtener el carácter o el código Ascii, justo después el programa dirá al usuario que introduzca el código Ascii o el carácter para convertir, obteniendo el resultado. La explicación del código se hará al final del mismo.

Vamos allá!! el código de nuestro programa es el siguiente:

import java.util.Scanner;

public class CodigoAscii {
    
    public static void main(String[] args) {
        CambioConversion pCambio = new CambioConversion();
        Scanner miScanner = new Scanner(System.in);
        int aCar;
        char ele;
        int opcion;
        
        do{
        System.out.println("Pulse 1 para pasar de carácter a código Ascii o "
                + "pulse 2 para convertir código Ascii en carácter.");
        opcion = miScanner.nextInt();
        }
        while(opcion >2);
        
        if(opcion == 1){
            System.out.println("Escriba el carácter a pasar a Ascii: ");
            ele = miScanner.next().charAt(0);
            pCambio.aAscii(ele);
            System.out.println(pCambio.getAscii());
            
        }else{
            System.out.println("Escriba el código Ascii a pasar a carácter: ");
            aCar = miScanner.nextInt();
            pCambio.aCaracter(aCar);
            System.out.println(pCambio.getCaracter());
        }
    }
    
}

class CambioConversion{
    private int cambio;
    private char caracter;
    
    public void aAscii(char caracter) {
            cambio = (int)caracter;
    }
    
    public void aCaracter(int numero) {
        caracter = (char)numero;
    }
    
    public int getAscii(){
        return cambio;
    }
    public char getCaracter() {
        return caracter;
    }
}
En primer lugar, hay que observar que el programa contiene 2 clases, la clase CodigoAscii y la clase CambioConversion. En la clase CambioConversion es dónde se crearán los métodos y atributos necesarios para luego en la clase CodigoAscii crear un objeto de la clase CambioConversion. Vamos a ver primero la clase CambioConversion. Esta clase contiene 2 atributos, uno de tipo entero y otro de tipo char, también cuenta esta clase con 4 métodos:
  1. El método aAscii no devuelve nada (es un método void) y al que se le pasa como parámetro un dato de tipo char. Dentro de este método se asocia el valor del parámetro del método de tipo char a la variable cambio, es decir, la variable cambio de tipo int va a tener el valor del parámetro que se le pase al método. Para que pueda pasar el valor de una variable de tipo char a una variable de tipo int se debe hacer un casting. Un casting consiste en pasar un tipo de dato a otro, en este caso pasamos un char a un entero (tipo int).
  2. El método aCaracter es parecido al anterior, este método será utilizado cuando se quiera pasar de código Ascii a carácter. Observamos que no devuelve nada y que se le pasa como parámetro un entero de nombre número. Éste método lo que hace es que la variable de tipo char de nombre carácter pase a valer el valor que se le pasa por parámetro al método. Como en el método anterior vimos que la variable es de tipo char y se le asocia un valor de tipo int, por lo que también debemos hacer un casting de datos para pasar un entero a char.
  3. El método getAscii() devuelve un entero y será el encargado de devolvernos el valor del código Ascii cuando hagamos la llamada a este método.
  4. Por último el método getCaracter funciona de igual manera que el método getCaracter(), con la diferencia que éste último nos devuelve el valor de la variable char carácter
A partir de esta clase que acabamos de ver vamos a crear objetos (en este caso con crear un objeto nos bastaría) para poder utilizar los métodos. ¿Dónde se van a crear los objetos de la clase CambioConversion? Pues dentro de la clase que nos queda por ver, que es la clase CodigoAscii, esta clase contiene el método main necesario para que se pueda ejecutar, es aquí, dentro del método dónde se crearán las instancias.
Lo primero que hemos hecho ha sido crear 2 objetos, uno de la clase CambioConversion y otro de la clase Scanner, necesario para poder leer entradas por teclado del usuario. Para poder utilizar la clase Scanner hay que importarla desde la librería de Java (import java.util.Scanner;)
Hemos creado también tres atributos, dos de tipo entero y uno de tipo char.
  1. El atributo de tipo int de nombre opción será dónde se guarde el número introducido por teclado por el usuario para elegir entre convertir de código Ascii a carácter o si por el contrario convierte el carácter al código Ascii.
  2. El atributo de tipo char de nombre ele es dónde se guardará, en caso de que el usuario elija esta opción, el carácter que se quiere que se pase a código Ascii.
  3. El atributo de tipo int de nombre aCar almacenará el código Ascii que se quiere que se pase a carácter.
En el programa utilizamos el loop do...while para preguntar al usuario qué opción quiere, pasar de código Ascii a carácter o al revés. La opción elegida se almacena en la variable opción. El loop se repetirá continuamente si el usuario introduce un número superior a 2. Si el usuario introduce un carácter distinto a un número saltará una excepción.
Bueno, ya solo queda utilizar el condicional if para que si el usuario a escogido la opción 1 o la opción 2 se ejecuten los métodos de la clase CambioConversion para hacer la conversión adecuada en cada caso.
Bueno, espero que os haya servido este programa, se podría haber hecho más sencillo este programa pero quería hacerlo utilizando objetos y la clase Scanner para que sea el usuario quien introduzca los valores.

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...