Ejercicios Prácticos de Programación en Java: Manipulación de Strings, Matrices y Vectores

Clasificado en Informática

Escrito el en español con un tamaño de 23,08 KB

Clase Prueba: Concatenación y Manipulación de Strings

En esta sección, exploraremos diferentes métodos para concatenar y manipular cadenas (Strings) en Java.

public class Prueba {
    public static void main(String args[]) {
        int i;
        String s1 = "hola"; //Declaración de cadena s1
        System.out.println("s1=" + s1);
        String s2 = ""; //Declaración de cadena s2
        s1 = s1 + " isc"; //Concatenación opción 1
        System.out.println("s1=" + s1); //Impresión de la cadena ya concatenada
        s1 = "uaa"; //Nuevo valor a s1
        System.out.println("s1=" + s1); //Impresión de s1
        s1 = s1.concat(" tercero"); //Concatenación opción 2
        System.out.println("s1=" + s1); //Impresión
        for (i = 0; i < 3; i++) {
            s2 = s2.concat(" *"); //Concatenación en un ciclo
        }
        System.out.println("s2= " + s2);
        s2 = s1 + " en java"; //Concatenar variables con una literal de cadena
        System.out.println("s2= " + s2);
        System.out.println("caracter x caracter: ");
        for (i = 0; i < s2.length(); i++) {
            System.out.print(s2.charAt(i) + " "); //Recorrer caracter x caracter un String
        }
        char cad[] = s2.toCharArray(); //Pasar un String a un arreglo de char
        System.out.println("\ncaracter x caracter");
        for (i = 0; i < cad.length; i++) {
            System.out.print(cad[i] + " ");
            cad[i] = 'x';
        }
        String s3 = new String(cad); //Pasando un arreglo de char a un String opción 1
        System.out.println("\ns3=" + s3);
        s1 = String.valueOf(cad); //Pasando un arreglo de char a un String opción 2
        System.out.println("\ns1=" + s1);
        String c1 = "hola";
        System.out.println(c1.charAt(2));
        c1 = c1 + c1.charAt(2); //Sumar a una cadena una casilla de una cadena
        System.out.println(c1);
        if (c1.charAt(0) != c1.charAt(2)) //Comparar dos casillas de una cadena
            System.out.println("diferentes");
        char k = c1.charAt(0); //Asignar a un char una casilla de una cadena
        char v[] = new char[5];
        v[0] = c1.charAt(2); //Asignar a una casilla de un vector una casilla de una cadena
        System.out.println("k=" + k);
        System.out.println("v[0]=" + v[0]);
    }
}

Clase VariosString: Métodos Útiles para Strings

Aquí se demuestran varios métodos importantes para la manipulación de Strings en Java.

public class Variosstring {
    public static void main(String[] arg) {
        /*************Metodo Length**************/
        //Length saca la longitud
        System.out.println("Metodo Length");
        String cadena = "universidad";
        System.out.println("La longitud de " + cadena + " es: " + cadena.length());

        /*************Metodo Equals**************/
        //Equals es un if para Strings
        System.out.println("\nMetodo Equals");
        String cad1 = "universidad";
        String cad2 = "uni";
        if (cad1.equals(cad2))
            System.out.println(cad1 + " es igual a " + cad2);
        else
            System.out.println(cad1 + " NO es igual a " + cad2);

        /**************Metodo valueOf*************/
        //valueOf convierte de int a String
        System.out.println("\n Metodo valueOf");
        int numero = 123;
        System.out.println("El numero como entero es " + numero);
        String num = String.valueOf(numero);
        System.out.println("El numero como cadena es");
        for (int i = 0; i < num.length(); i++)
            System.out.println("casilla " + i + " = " + num.charAt(i));

        /************Metodo toCharArray()************/
        //Cambiar string a vector
        System.out.println("\nMetodo toCharArray()");
        String cuidad = "aguascalientes";
        char[] cd = cuidad.toCharArray();
        System.out.println("La cadena es " + cuidad);
        System.out.println("imprimiendo el vector de char");
        for (int i = 0; i < cd.length; i++)
            System.out.println(cd[i] + "-");

        /**************Metodo valueOf()*************/
        //valueOf para pasar un vector de char a una cadena
        System.out.println("\nMetodo valueOf()");
        char[] puesto = {'d', 'i', 'r', 'e', 'c', 't', 'o', 'r'};
        String puestoCad1 = new String(puesto);
        System.out.println("");
        String puestoCad2 = String.valueOf(puesto);
        System.out.println("El vector de char como String opcion 1 " + puestoCad1);
        System.out.println("El vector de char como String opcion 2 " + puestoCad2);

        /**************Metodo trim *****************/
        //Borra espacios en blanco
        System.out.println("\nMetodo trim");
        String nombre = " UVM ";
        System.out.println("Antes de aplicar trim " + "*" + nombre + "*");
        nombre = nombre.trim();
        System.out.println("Despues de aplicar trim " + "*" + nombre + "*");

        /**************Metodo split *****************/
        //elimina un caracter especifico
        System.out.println("\nMetodo split");
        String colores = "rojo,amarillo,verde,azul,morado,marron";

        String[] arrayColores = colores.split(",");

        for (int i = 0; i < arrayColores.length; i++)
            System.out.println(arrayColores[i]);

        /**************Metodo substring**************/
        //toma solo una parte de la cadena especificada
        System.out.println("\nMetodo substring");
        String cad = "anita lava la tina";
        String subcad = cad.substring(6, 10);

        System.out.println("cadena: " + cad);
        System.out.println("subcadena: " + subcad);

        /**************Metodo indexOf()**************/
        //compara si dos cadenas comparten algun patron
        System.out.println("\nMetodo indexOf()");
        System.out.println("Buscando un patron en un cadena");
        String text = "abracadabra";
        String pattern = "cada";
        System.out.println("text: " + text);
        System.out.println("patron: " + pattern);
        int res = text.indexOf(pattern);
        if (res == -1)
            System.out.println("patron NO encontrado");
        else
            System.out.println("patron encontrado en la posicion " + res);
    }
}

Clase ListaDeNumeros: Introducción a ArrayList

Esta sección introduce el uso de ArrayList para almacenar una lista de números enteros.

public class ListaDeNumeros {
    public static void main(String[] args) {
        ArrayList listaNumeros = new ArrayList();
        int x = 5;
        int y = 7;
        listaNumeros.add(x);
        listaNumeros.add(34);
        listaNumeros.add(67);
        System.out.println("Total de elementos en la lista =" + listaNumeros.size());
        //recorriendo la lista
        System.out.println("La lista contiene: ");
        for (int i = 0; i < listaNumeros.size(); i++) {
            System.out.println(listaNumeros.get(i));
        }
    }
}

Clase ListaTipoDeUnaClase: ArrayList de Objetos Personalizados

Aquí se muestra cómo crear y manipular un ArrayList que contiene objetos de una clase definida por el usuario (Mascota).

public class ListaTipoDeUnaClase {
    //Mostrando como generar una lista del tipo de una clase
    public static void main(String[] args) {
        ArrayList listaMascotas = new ArrayList();
        Mascota obj;
        Scanner leer = new Scanner(System.in);
        char resp = 's';
        String nombre, tipo;
        int edad;
        String nombres[] = {"fifi", "daysi", "kiara", "poof", "cosita", "rocki", "cofi", "luna", "margarito"};
        String tipos[] = {"perro", "gato", "conejo", "pato", "pez", "tortuga", "pajaro", "huron", "cuyo"};
        while (resp == 's') {
            System.out.println("\nGenerando aleatoriamente los datos .....");
            nombre = nombres[(int) (Math.random() * (nombres.length - 1 - 0 + 1) + 0)]; //generando un aleatorio para seleccionar un indice del vector de nombres
            tipo = tipos[(int) (Math.random() * (tipos.length - 1 - 0 + 1) + 0)]; //generando un aleatorio para seleccionar un indice del vector de tipos
            edad = (int) (Math.random() * (5 - 0 + 1) + 0); //generando un aleatorio para seleccionar una edad
            obj = new Mascota(nombre, tipo, edad); //generando una instancia de la clase mascota
            listaMascotas.add(obj); //agregando el objeto a la lista
            System.out.println("Guardando ... nombre:" + nombre + " tipo:" + tipo + " edad:" + edad);
            System.out.println("\nDeseas guardar los datos de otra mascota s/n");
            resp = leer.next().charAt(0);
        }
        //imprimiendo la lista de mascotas
        System.out.println("\nLista de mascotas \n");
        for (int i = 0; i < listaMascotas.size(); i++) {
            System.out.println("\nMascota #" + i);
            System.out.println("nombre: " + listaMascotas.get(i).getNombre()); //se recupera el indice con get(i) y luego se llama al metodo getNombre()
            System.out.println("tipo: " + listaMascotas.get(i).getTipo());
            System.out.println("edad: " + listaMascotas.get(i).getEdad());
        }
        //Para cambiar el valor de algun atributo de un objeto de la lista
        System.out.println("El nombre de la posicion #2 es " + listaMascotas.get(2).getNombre());
        //1 Recuperar el objeto de la lista, a un objeto del tipo de la lista
        Mascota objeto;
        objeto = listaMascotas.get(2);
        //2 cambiar el valor del atributo que se desea con los metodos set
        objeto.setNombre("perico");
        //3 volver a colocar el objeto en la lista
        listaMascotas.set(2, objeto);
        System.out.println("El nombre de la posicion #2 es " + listaMascotas.get(2).getNombre());
    }
}

class Mascota {
    private String tipo;
    private String nombre;
    private int edad;

    public Mascota() {
    }

    public Mascota(String tipo, String nombre, int edad) {
        this.tipo = tipo;
        this.nombre = nombre;
        this.edad = edad;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }
}

Clase ListaTipoString: ArrayList de Strings

Esta sección demuestra el uso de ArrayList para almacenar y manipular cadenas.

public class ListaTipoString {
    public static void main(String[] args) {
        ArrayList listaCadenas = new ArrayList();
        // Añade el elemento al ArrayList
        listaCadenas.add("azul");
        listaCadenas.add("amarillo");
        listaCadenas.add("blanco");
        System.out.println("La lista va asi: " + listaCadenas);
        // Añade el elemento al ArrayList en la posición indicada y desplaza elementos a la derecha
        listaCadenas.add(0, "rojo");
        System.out.println("La lista va asi: " + listaCadenas);
        listaCadenas.add("verde");
        System.out.println("La lista va asi: " + listaCadenas);
        // Devuelve el numero de elementos del ArrayList
        System.out.println("Total de elementos en la lista " + listaCadenas.size());
        // Devuelve el elemento que esta en la posición '2' del ArrayList
        System.out.println("El dato en la posicion 2 es: " + listaCadenas.get(2));
        listaCadenas.set(2, "morado"); //este metodos sustituye el valor de la posicion 2 por el valor indicado
        System.out.println("El dato en la posicion 2 es: " + listaCadenas.get(2));
        //Mostrar una Lista con ciclo
        //Mostrando los valores de la lista ...
        System.out.println("\n Mostrando los valores de la lista ");
        for (int i = 0; i < listaCadenas.size(); i++) {
            System.out.println("En la posicion " + i + ": " + listaCadenas.get(i));
        }
    }
}

Clase Matriz: Operaciones con Matrices

Esta sección cubre la creación, llenado, impresión y diversas operaciones con matrices, incluyendo la impresión en zigzag, suma por renglones y columnas, búsqueda de elementos y ordenamiento.

public class Matriz {
    private int[][] m;

    public Matriz(int ren, int col) {
        this.m = new int[ren][col];
    }

    public int generaUnAleatorio() {
        return (int) (Math.random() * (90 - 0 + 1) + 0);
    }

    public void llenaMatriz() {
        for (int i = 0; i < this.m.length; i++) {
            for (int j = 0; j < this.m[i].length; j++) {
                this.m[i][j] = this.generaUnAleatorio();
            }
        }
    }

    public void imprimeMatriz() {
        int a = 1;
        for (int i = 0; i < this.m.length; i++) {
            for (int j = 0; j < this.m[i].length; j++) {
                if (a == m[i].length + 1) {
                    System.out.println();
                    a = 1;
                }
                System.out.print(this.m[i][j] + " - ");
                a++;
            }
        }
    }

    public void imprimeMatrizZigZag() {
        for (int i = 0; i < this.m.length; i++) {
            int a = i;
            if (a % 2 == 0) {
                System.out.println();
                for (int j = 0; j < this.m[i].length; j++) {
                    System.out.print(this.m[i][j] + " - ");
                }
            }
            if (a % 2 != 0) {
                System.out.println();
                for (int j = this.m[i].length - 1; j >= 0; j--) {
                    System.out.print(this.m[i][j] + " - ");
                }
            }
        }
    }

    public void imprimeSumaPorRenglones() {
        int[] v = new int[this.m.length];
        for (int i = 0; i < this.m.length; i++) {
            int p = 0;
            for (int j = 0; j < this.m[i].length; j++) {
                p += this.m[i][j];
            }
            v[i] = p;
        }
        for (int i = 0; i < v.length; i++) {
            System.out.println("La suma del renglon " + i + " es: " + v[i]);
        }
    }

    public void imprimeSumaPorColumnas() {
        int[] v = new int[this.m[0].length];
        for (int i = 0; i < this.m[0].length; i++) {
            int p = 0;
            for (int j = 0; j < this.m.length; j++) {
                p += this.m[j][i];
            }
            v[i] = p;
        }
        for (int i = 0; i < v.length; i++) {
            System.out.println("La suma de la columna " + i + " es: " + v[i]);
        }
    }

    public int totalVeces(int num) {
        int cont = 0;
        for (int i = 0; i < this.m.length; i++) {
            for (int j = 0; j < this.m[i].length; j++) {
                if (num == this.m[i][j])
                    cont++;
            }
        }
        return cont;
    }

    public int[] pasarDeMatrizAVector() {
        int v[] = new int[this.m.length * this.m[0].length];
        int cont = 0;
        for (int i = 0; i < this.m.length; i++) {
            for (int j = 0; j < this.m[i].length; j++) {
                v[cont] = this.m[i][j];
                cont++;
            }
        }
        return v;
    }

    public int[][] pasarDeVectorAMatriz(int v[], int ren, int col) {
        int cont = 0;
        int[][] matriz = new int[ren][col];
        for (int i = 0; i < matriz.length; i++) {
            for (int j = 0; j < matriz[i].length; j++) {
                matriz[i][j] = v[cont];
                cont++;
            }
        }
        return matriz;
    }

    public int[] ordenaInsercion(int[] v) {
        //Metodo para ordenar el vector
        int aux;
        for (int i = 1; i < v.length; i++) {
            aux = v[i];
            for (int j = i - 1; j >= 0 && v[j] > aux; j--) {
                v[j + 1] = v[j];
                v[j] = aux;
            }
        }
        return v;
    }

    public void ordenarMatriz() throws InterruptedException {
        int v[] = new int[this.m.length * this.m[0].length];
        int vo[] = new int[this.m.length * this.m[0].length];
        Thread.sleep(1000);
        System.out.println("Convirtiendo Matriz a Vector...");
        v = this.pasarDeMatrizAVector();
        System.out.println("Ordenacion de datos.... ");
        vo = this.ordenaInsercion(v);
        Thread.sleep(1000);
        System.out.println("Convirtiendo Vector a Matriz\n\n");
        this.m = this.pasarDeVectorAMatriz(v, m.length, m[0].length);
        int a = 1;
        Thread.sleep(1000);
        System.out.println("Imprimiendo Matriz ordenada... ");
        for (int i = 0; i < this.m.length; i++) {
            for (int j = 0; j < this.m[i].length; j++) {
                if (a == m[i].length + 1) {
                    System.out.println();
                    a = 1;
                }
                System.out.print(m[i][j] + " - ");
                a++;
            }
        }
    }

    public static void main(String[] args) throws InterruptedException {
        Matriz obj;
        char res = 's', res1;
        Scanner teclado = new Scanner(System.in);
        do {
            System.out.println("Ingrese el numero de renglones y columnas de la matriz respectivamente: ");
            int ren = teclado.nextInt();
            int col = teclado.nextInt();
            System.out.println("Creando nueva matriz");
            Thread.sleep(1000);
            obj = new Matriz(ren, col);
            System.out.println("Generando datos para incrustar a la matriz...");
            Thread.sleep(1000);
            obj.llenaMatriz();
            Thread.sleep(1000);
            System.out.println("\nImprimiendo Matriz...");
            obj.imprimeMatriz();
            Thread.sleep(1000);
            System.out.println("\n\nImprimiendo Matriz en Zig Zag...");
            obj.imprimeMatrizZigZag();
            Thread.sleep(1000);
            System.out.println("\n\nGenerando suma de datos por renglon....");
            obj.imprimeSumaPorRenglones();
            Thread.sleep(1000);
            System.out.println("Generando suma de datos por columna....");
            obj.imprimeSumaPorColumnas();
            Thread.sleep(1000);
            System.out.println("\nDesea buscar un dato?");
            res1 = teclado.next().charAt(0);
            if (res1 == 's') {
                System.out.println("Ingrese el dato de referencia:");
                int num = teclado.nextInt();
                Thread.sleep(1000);
                if (obj.totalVeces(num) != 0) {
                    System.out.println("Dato encontrado en el vector...");
                    System.out.println("# de ocasiones encontrado: " + obj.totalVeces(num));
                }
                if (obj.totalVeces(num) == 0) {
                    System.out.println("Dato no encontrado... ");
                }
            }
            Thread.sleep(1000);
            System.out.println("\n\nOrdenando Matriz por Insercion....");
            obj.ordenarMatriz();
            System.out.println("\n\nDesea crear una nueva matriz?");
            res = teclado.next().charAt(0);
        } while (res != 'n');
    }
}

Clase Vector: Operaciones con Vectores y Métodos de Ordenamiento

Esta sección explora la creación, llenado, impresión y ordenamiento de vectores utilizando los métodos de selección y burbuja. También incluye la búsqueda de datos y el cálculo del promedio.

public class Vector {
    private int v[];
    private int ls, li;

    public Vector(int n) {
        this.v = new int[n];
    }

    public void ordenaSeleccion() {
        int i, j, menor, pos, tmp;
        for (i = 0; i < v.length - 1; i++) { //Tomamos como menor el primero
            menor = v[i]; //de los elementos que quedan por ordenar
            pos = i; //y guardamos su posición
            for (j = i + 1; j < v.length; j++) { //Buscamos en el resto
                if (v[j] < menor) { //del array algún elemento
                    menor = v[j]; //menor que el actual
                    pos = j;
                }
            }
            if (pos != i) { //Si hay alguno menor se intercambia
                tmp = v[i];
                v[i] = v[pos];
                v[pos] = tmp;
            }
        }
    }

    public void ordenaBurbuja() {
        int i, j, aux;
        for (i = 0; i < v.length - 1; i++) {
            for (j = 0; j < v.length - 1; j++) {
                if (v[j + 1] < v[j]) {
                    aux = v[j + 1];
                    v[j + 1] = v[j];
                    v[j] = aux;
                }
            }
        }
    }

    public int generaUnAleatorio(int ls, int li) {
        return (int) ((Math.random() * ls - li + 1) + li);
    }

    public void llenarVector() {
        for (int i = 0; i < v.length; i++) {
            this.v[i] = generaUnAleatorio(ls, li);
        }
    }

    public void imprimeVector() {
        for (int i = 0; i < this.v.length; i++) {
            System.out.println(this.v[i]);
        }
    }

    public boolean buscaDato(int num) {
        boolean r = false;
        for (int i = 0; i < this.v.length; i++) {
            if (this.v[i] == num) {
                r = true;
                break;
            }
        }
        return r;
    }

    public double promedio() {
        int aux = 0;
        for (int i = 0; i < v.length; i++) {
            aux += v[i];
        }
        return (double) aux / v.length;
    }

    public int getLs() {
        return ls;
    }

    public void setLs(int ls) {
        this.ls = ls;
    }

    public int getLi() {
        return li;
    }

    public void setLi(int li) {
        this.li = li;
    }

    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int n, r, d, num, ls, li;
        System.out.println("Dame el numero de espacios que tendra el vector");
        n = leer.nextInt();
        Vector v1 = new Vector(n);
        System.out.println("vamos a llenar los vectores, por favor escriba los valores superiores e inferirores ");
        ls = leer.nextInt();
        li = leer.nextInt();
        v1.ls = ls;
        v1.li = li;
        v1.llenarVector();
        System.out.println("Vector 1");
        v1.imprimeVector();
        System.out.println("Ahora Ordenaremos el vector con el metodo de seleccion");
        v1.ordenaSeleccion();
        v1.imprimeVector();
        System.out.println("Crearemos un nuevo vector y lo ordenaremos con el metodo de burbuja ");
        Vector v2 = new Vector(n);
        v2.li = li;
        v2.ls = ls;
        v2.llenarVector();
        System.out.println("Vector 2");
        v2.imprimeVector();
        v2.ordenaBurbuja();
        v2.imprimeVector();
        System.out.println("Teclee un numero que buscaremos en el vector 1 y en el vector 2");
        num = leer.nextInt();
        System.out.println("El numero en el vector v1 existe?:" + v1.buscaDato(num));
        System.out.println("El numero en el vector v2 existe?:" + v2.buscaDato(num));
        System.out.println("Por ultimo sacaremos el promedio de los vectores v1 y v2");
        System.out.println("El promedio en el vector 1 es:" + v1.promedio());
        System.out.println("El promedio en el vector 2 es:" + v2.promedio());
    }
}

Entradas relacionadas: