Ordenamiento de cadenas con Java I/O

Ir abajo

Ordenamiento de cadenas con Java I/O

Mensaje  Admin (Viruz) el Dom Ene 06, 2013 1:17 am

Hola que tal amigos de Viruz Blog el día de hoy tenemos 3 temas interesantes en un sencillo programa, el cual ustedes podrán apreciar un ordenamiento de cadenas y con esto se retoca el tema del paquete de java.io con sus clases BufferedReader e InputStreamReader. Los temas que se abarcarán son los siguientes:

  • Métodos estáticos.
  • Ordenamiento de cadena en Burbuja.
  • Evaluación y comprobación de letras, números y caracteres especiales.
Métodos Estáticos
Se cargan en memoria en tiempo de compilación y no a medida de que se ejecutan las líneas de código del programa. Van precedidos del modificador static. Para invocar a un método estático no se necesita crear un objeto de la clase en la que se define.

Si se invoca desde la clase en la que se encuentra definido, basta con escribir su nombre.Si se le invoca desde una clase distinta, debe anteponerse a su nombre, el de la clase en la que se encuentra seguido del operador punto (.)
Lo que se necesita conocer
¿Como funciona el programa?

  1. Empezando por la clase Main tenemos la lectura de una cadena en la cual la clase Leer tiene un método estático leer() y apreciaremos con ejemplos anteriores el procedimiento de lectura con readLine() pero tendremos un nuevo método skip() el cual se le pasa como parámetro el número de caracteres que se van a saltar.
  2. Regresando a la clase Main hacemos el llamado de 3 métodos de la clase Cadena.
  3. Empezando con el método letrasYnumeros() en este se evaluarán todos aquellos caracteres que no sean ni números ni letras y en un contador se acumularán. El segundo método evaluar() es aquí donde mediante unos if() podemos averiguar si son de tipo letra o número para que al final se puedan imprimir.
  4. El último método es el mas complicado ordenar() ya que mediante ciclos for() realizando un arreglo y un ciclo if() haremos el ordenamiento de caracteres que va de la siguiente forma:

    • Caracteres especiales.
    • Números.
    • Letras mayúsculas.
    • Letras minúsculas.
Imagen
[Tienes que estar registrado y conectado para ver esa imagen]

Código

Clase Main
/**
*
* @author Viruz
*/
public class Main {
public static void main(String []Args) {
System.out.println("Digite una Nueva Cadena: ");
String cad2 = Leer.leer();
Cadenas.letrasYnumeros(cad2);
Cadenas.evaluar(cad2);
Cadenas.ordenar(cad2);
}
}

Clase Leer
/**
*
* @author Jesus Ivan
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Leer {
public static InputStreamReader isr=new InputStreamReader(System.in);
public static BufferedReader br=new BufferedReader(isr);

public static String leer() {
String Dato=" ";
try {
Dato= br.readLine();
br.skip(System.in.available());
} catch ( IOException Err ) {
}
return Dato;
}
}

Clase Cadenas

/**
*
* @author Jesus Ivan
*/
public class Cadenas {
static int cantespeciales = 0;

public Cadenas() {
}

public static void letrasYnumeros(String cad) {
String nc="";
for (int i=0; i<cad.length(); i++) {
//El if verifica que entre en el rango de letras o números
if ((cad.charAt(i)>= 'a' & cad.charAt(i)<='z' | cad.charAt(i)>= 'A' & cad.charAt(i)<='Z' | cad.charAt(i)>= '0' & cad.charAt(i)<='9')!=true) {
cantespeciales++;
nc=nc+'?';
} else
nc=nc+cad.charAt(i);
}
System.out.println("Lo q no es letra ni número se reemplaza por el simbolo (?) : "+nc);
}

public static void evaluar(String cad) {
int cantletras=0,cantnums=0;
for (int i=0; i<cad.length(); i++) {
//Se comprueba si es Letra y se suman
if ((cad.charAt(i)>= 'a' && cad.charAt(i)<='z')||(cad.charAt(i)>= 'A' && cad.charAt(i)<='Z'))
cantletras++;
//Se comprueba si es Número
else if (cad.charAt(i)>= '0' && cad.charAt(i)<='9')
cantnums++;
}

System.out.println("Cantidad de Letras: "+cantletras);
System.out.println("Cantidad de Números: "+cantnums);
System.out.println("Cantidad de Caracteres Especiales: "+cantespeciales);
}

public static void ordenar(String cad) {
int i,j;
char nc[]= new char [cad.length()+1];
for ( i=0; i<cad.length(); i++)
nc[i]=cad.charAt(i);
for (i=0; i<cad.length(); i++) {
for (j=i+1; j<cad.length(); j++) {
if (nc[i]> nc[j]) {
char aux=nc[i];
nc[i]= nc[j];
nc[j]=aux;
}
}
}
System.out.print("Cadena Ordenda: ");
for (i=0; i<cad.length(); i++)
System.out.print(nc[i]);
System.out.println("");
}
}


Descarga el código
[Tienes que estar registrado y conectado para ver este vínculo]

Autor: Viruz study
Enlace: [Tienes que estar registrado y conectado para ver este vínculo]

_________________
[Tienes que estar registrado y conectado para ver esa imagen]
avatar
Admin (Viruz)
Admin

Mensajes : 148
Fecha de inscripción : 23/09/2012
Edad : 30
Localización : Desktop

http://viruz.foroactivo.mx

Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.