octubre 16, 2012

Convertir de String a char

Para convertir de String a char deberemos tomar en cuenta que las variables char solo almacenan una solo carácter así que si tenemos una String que contiene mas de un caracteres deberos convertirlos a char e ir guardándolo los caracteres en un arreglo char. Para que quede mas claro todo esto hice un programa que ejemplifica todo lo anterior.
package Conversiones;
/**
 * Archivo: Conversiones.java
 * @author BelloCerecero
 * @since 16/10/2012
 */
public class Conversiones
{
  public static void main(String [] args)
  {
    //Cuando leemos una sola letra.
    String cadena = "A";
    char letra = cadena.charAt(0);
    System.out.println(letra);
    System.out.println("");
 
    //Cuando leemos una serie de letras.
    String cadena_de_caracteres = "ndnpsituylznchsp";
    char array_caracteres [] = cadena_de_caracteres.toCharArray();

    //imprimimos el arreglo
    for(int i = 0; i < array_caracteres.length; i++)
    {
      System.out.print(array_caracteres[i]);
    }
  }
}
Como vemos en la linea 12 tenemos una variable de tipo String que tiene almacenada la letra "A" en este caso, como es solo un carácter, con el método charAt de la clase String podemos hacer la conversión, pasando-le de parámetro el numero 0 por que es el indice en el que se encuentra la letra "A" en la String. En la linea 18 tenemos una variable de tipo String que tiene almacenado una serie de caracteres y como las variables char solo pueden almacenar un solo caracter, lo que haremos sera guardar todos los caracteres en un arreglo de tipo char. Para poder realizar esto tendremos que usar el método toCharAt de la clase String, este método lo que hace es convertir toda la cadena a char pero lo almacena en un arreglo. Así que solo se lo asignamos a nuestro arreglo.

octubre 15, 2012

Operaciones con caracteres en matrices

El manejo de caracteres siempre es de mucha utilidad, sobre todo cuando trabajan con Autómatas. En este programa que hice, define algunos métodos para hacer operaciones con cierta cantidad de caracteres que los guarde en una matriz de 5x5. El programa es estructurado, muy bien comencemos.
    private static char arregloB[][];
    private static int filas = 5;
    private static int columnas = 5;
Pues como les había mencionado que el programa es estructurado, las variables son estáticas para que las pueda utilizar en el main sin necesidad de instancias, la primera variable es arreglo bidimensional de tipo char (solo esta declarado), la segunda es una variable de tipo entero y la llame fila (guarda las filas que tendrá la matriz) y por ultimo la tercera variable que también es de tipo entero y la llame columnas (guarda las columnas que tendrá la matriz).
public static boolean llenarArregloB(String cadena)
{
   //Checamos que los caracteres quepan en la matriz
   if(cadena.length() > (filas*columnas))
      return false;
   else
   {
      arregloB = new char [filas][columnas];
      int contador = 0;
   
      for(int i = 0; i < filas; i++)
      {
         for(int j = 0; j < columnas; j++)
         {
            if(contador < cadena.length())
            {
               arregloB[i][j] = cadena.charAt(contador);
               contador += 1;
            }
            else 
               break;
         }
      }
      return true;
   }
}
Define un método al que que llame llenarArregloB y este recibe de parámetro una cadena (en la que vienen todos los caracteres que el usuario introdujo), aquí en este método también inicializamos la matriz, y con dos for anidados procedemos a rellenar la matriz, pero como todos los caracteres viene en una sola cadena, utilizaremos el método charAt para pasarlos a tipo char.
public static void imprimir()
{
   for(int i = 0; i < filas; i++)
   {
      for(int j = 0; j < columnas; j++)
      {
         System.out.print(arregloB[i][j] + "\t");
      }
      System.out.println("");
   }
}
Con este método imprimiré la información de la matriz.
public static void ordenar()
{
   for( int i=0; i < filas; i++)
   {
      for( int j=0;j< columnas; j++)
      {
         for(int x=0; x < filas; x++)
         {
            for(int y=0; y < columnas; y++)
            {
               if(arregloB[i][j] < arregloB[x][y])
               {
                  char t = arregloB[i][j];
                  arregloB[i][j] = arregloB[x][y];
                  arregloB[x][y] = t;
               }
            }
         }
      }
   }
}
El método de ordenar lo que hace es ordenar los caracteres de forma ascendente (con base al codigo ASCII)