MANEJO DE CADENAS DE CARACTERES EN JAVA



EJERCICIOS RESUELTOS


1.  Leer una frase y encontrar la palabra de mayor longitud. El programa debe imprimir la palabra como el número de caracteres de la misma

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ejerc12 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i, c=0;
        String cadena, palabra="", mostrar = null;

        System.out.println("Ingrese la cadena: ");
        cadena=br.readLine();
        cadena+=" ";

        for(i=0;i<cadena.length();i++){
            palabra=palabra+cadena.charAt(i);
            if(cadena.charAt(i)==' '){
                if(palabra.length()-1>c){
                    c=palabra.length()-1;
                    mostrar=palabra.trim();
                }
                palabra="";
            } 
        }
        System.out.println("La palabra de mayor longitud es: "+mostrar);
        System.out.println("Su longitud es: "+c);
    }
}


2.  Ingresar una cadena y determinar cuantas palabras se encuentran en la cadena.  Cada palabra se separa por medio de un espacio en blanco.

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc11 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i, con=1;
        String cadena, palabra="";

        System.out.println("Ingrese la cadena a evaluar: ");
        cadena=br.readLine();
        for(i=0;i<cadena.length();i++){
            if(cadena.charAt(i)==' '){
                con++;
            }
        }
        System.out.println("La cadena contiene "+con+" palabras");       
    }

}


3.   Ingresar un número telefónico en formato de cadena y luego lo convierta de la siguiente manera:
            Número Telefónico: 5256284000
            Nueva Cadena: (52)-5-6284000

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc15 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i;
        String cadena,c1="", c2="", c3="";
        System.out.println("Ingrese la cadena a evaluar: ");
        cadena=br.readLine();

        for(i=0;i<cadena.length();i++){
            if(i<2){
                c1=c1+cadena.charAt(i);
            }
            else{
                if(i==2){
                    c2+=cadena.charAt(i);
                }
                else{
                    c3+=cadena.charAt(i);
                }
            }
        }
        System.out.println("la nueva cadena es: \n"+"("+c1+")"+"-"+c2+"-"+c3);
    }
}


4.   Hacer un programa que al recibir como datos dos cadenas de caracteres forme una tercera cadena intercalando los caracteres de las palabras de las cadenas recibidas.

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc16 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i, j, k=0;
        String cadena1, cadena2, cadena3="";

        System.out.println("Ingrese la primera cadena: ");
        cadena1=br.readLine();
        System.out.println("Ingrese la segudna cadena: ");
        cadena2=br.readLine();
       
        for(i=0;i<cadena1.length();i++){
            cadena3+=cadena1.charAt(i);
            for(j=k;j<cadena2.length();j++){
               cadena3+=cadena2.charAt(j);
               j=cadena2.length();
               k++;
            }
        }
        System.out.println("La cadena intercalada es: "+cadena3);
    }
}


5.       Ingrese un texto e indique que letras no han aparecido en el texto.

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc20 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int ini, con=0;               
        String texto, nueva="", mensaje="";

        System.out.println("Ingrese el texto a evaluar: ");
        texto=br.readLine();

        for(ini=0;ini<texto.length();ini++){
            if(texto.charAt(ini)!=' '){
                nueva=nueva+texto.charAt(ini);
            }
        }
        nueva=nueva.toLowerCase();
        for(char caracter='a';caracter<='z';caracter++){
            for(ini=0;ini<nueva.length();ini++){           
            if(caracter==nueva.charAt(ini)){
                 con++;
               }
            }
            if(con==0){
                mensaje+=caracter+" ";
            }
            con=0;
        }
        System.out.println("\nLos caracteres que faltan son: \n"+mensaje);
    }
}

  
6.  Ingrese un texto e indique el porcentaje de palabras que tiene menos de 5 caracteres  y el porcentaje de palabras con 5 o más caracteres.

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc21 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i;
        double porcentaje1, porcentaje2, con=0, p5=0, p6=0;
        String texto, palabra="";

        System.out.println("Ingrese el texto a evaluar: ");
        texto=br.readLine();
        texto=texto+" ";
        for(i=0;i<texto.length();i++){
            palabra+=texto.charAt(i);
            if(texto.charAt(i)==' '){
                palabra=palabra.trim();
                if(palabra.length()<5){
                    p5++;
                }
                else{
                    p6++;
                }
                palabra="";
                con++;
            }
        }
       
        porcentaje1=(double)((p5/con)*100);
        porcentaje2=(double)((p6/con)*100);
        System.out.println("El porcentaje de palabras con menos de 5 caracteres es: "+porcentaje1+" %");
        System.out.println("El porcentaje de palabras con 5 o mas caracteres es: "+porcentaje2+" %");
    }
}


7.   Escriba un programa que lea una frase y a continuación visualice cada palabra de la frase en columnas,  seguida del número de letras que tiene cada palabra.

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc23 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i, j;
        String frase, palabra="", nueva="";
        System.out.println("Ingrese la frase a evaluar: ");
        frase=br.readLine();
        frase+=" ";

        for(i=0;i<frase.length();i++){
            palabra+=frase.charAt(i);
            if(frase.charAt(i)==' '){
                palabra=palabra.trim();
                nueva=palabra;
                for(j=0;j<nueva.length();j++){
                    System.out.println("\t"+nueva.charAt(j));
                }
                System.out.println("\t"+nueva.length()+"\n\n");
                palabra="";
            }
        }
    }
}


8.  Escriba un programa que calcule la frecuencia de aparición de las vocales de un texto porcionado por el usuario. Esta solución se debe presentar en forma de histograma, por ejmplo:
             a   15     ***************
             e    8     ********

SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc24 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i, c1=0, c2=0,c3=0, c4=0, c5=0;
        String texto, m1="", m2="", m3="", m4="", m5="";

        System.out.println("Ingrese el texto a evaluar: ");
        texto=br.readLine();
        texto=texto.toLowerCase();
        for(i=0;i<texto.length();i++){
              if(texto.charAt(i)=='a'){
                  c1++;
                  m1+="*";
              }
              if(texto.charAt(i)=='e'){
                  c2++;
                  m2+="*";
              }
              if(texto.charAt(i)=='i'){
                  c3++;
                  m3+="*";
              }
              if(texto.charAt(i)=='o'){
                  c4++;
                  m4+="*";
              }
              if(texto.charAt(i)=='u'){
                  c5++;
                  m5+="*";
              }
        }
        System.out.println("");
        System.out.println("a"+"    "+c1+"    "+m1);
        System.out.println("e"+"    "+c2+"    "+m2);
        System.out.println("i"+"    "+c3+"    "+m3);
        System.out.println("o"+"    "+c4+"    "+m4);
        System.out.println("u"+"    "+c5+"    "+m5);
    }
}


9.  Escribir un programa que cuente el número de palabras en un texto, que tengan al menos cuatro vocales diferentes. 


SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ejerc25 {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        int i, con=0, c1=0, c2=0, c3=0, c4=0, c5=0, vocales;
        String texto, palabra="";

        System.out.println("Ingrese la palabra a evaluar: ");
        texto=br.readLine();
        texto=texto.toLowerCase();
        texto+=" ";
        for(i=0;i<texto.length();i++){
            palabra+=texto.charAt(i);
            if(texto.charAt(i)==' '){
                palabra=palabra.trim();
                for(int j=0;j<palabra.length();j++){
                    if(palabra.charAt(j)=='a'){
                    c1++;
                    if(c1>1){
                        c1=1;
                    }
              }
              if(palabra.charAt(j)=='e'){
                  c2++;
                  if(c2>1){
                        c2=1;
                    }
              }
              if(palabra.charAt(j)=='i'){
                  c3++;
                  if(c3>1){
                        c3=1;
                    }
              }
              if(palabra.charAt(j)=='o'){
                  c4++;
                  if(c4>1){
                        c4=1;
                    }
              }
              if(palabra.charAt(j)=='u'){
                  c5++;
                  if(c5>1){
                        c5=1;
                    }
              }
                }
                palabra="";
                vocales=c1+c2+c3+c4+c5;
                c1=0; c2=0; c3=0; c4=0; c5=0;
                if(vocales>=4){
                    con++;               
                }
            }
        }       
        System.out.println("Las palabras son: "+con);
    }
}


10. Un grupo de inteligencia militar desea codificar los mensajes secretos de tal forma que no puedan ser interpretados con una lectura directa, para lo cual han establecido las siguientes reglas:
       a) Todo mensaje debe estar sus letras en mayúsculas.
   b) Reemplazar cada letra por la que sigue según abecedario, excepto Z que  se deberá reemplazar con la letra A.
    c) reemplazar cada dígito encontrado por el siguiente numero excepto el 9 que  deberá ser reemplazado por el 0.


SOLUCIÓN:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class mensajemilitar {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        String mensaje, cod1="",cod2="", caracter;
        String ABC="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        String numeros="0123456789";

        System.out.println("Ingrese el mensaje: ");
        mensaje=br.readLine();
        System.out.println(""+mensaje);
        mensaje=mensaje.toUpperCase();
        for (int i = 0; i < mensaje.length(); i++) {
            caracter=mensaje.substring(i, i+1);
            if(caracter.equals(" ")){
                cod1=cod1+caracter;
            }
            else{
                for (int j = 0; j < ABC.length(); j++) {
                if(caracter.equals(ABC.substring(j,j+1))){
                    if(caracter.equals("Z")){
                        cod1=cod1+"A";
                        break;
                    }
                    else{
                        cod1=cod1+ABC.substring(j+1,j+2);
                        break;
                    }
                }
            }
            for (int k = 0; k <numeros.length(); k++) {
                if(caracter.equals(numeros.substring(k,k+1))){
                    if(caracter.equals("9")){
                        cod1=cod1+"0";
                        break;
                    }
                    else{
                        cod1=cod1+numeros.substring(k+1,k+2);
                        break;
                    }
                }
            }
            }
           
        }
        System.out.println("\nMENSAJE INGRESADO: "+mensaje);
        System.out.println("CODIGO RESULTANTE "+cod1);
    }

}





20 comentarios:

  1. Respuestas
    1. hola , buenas tardes porfavor ayudeme hacer este ejercicio
      no me sale este es el ejercicio;

      9) Escriba un algoritmo que solicite 10 letras del alfabeto cualesquiera, de manera que nos muestre el número de vocales y el número de consonantes ingresadas.

      Eliminar
  2. Fue de bastante ayuda !!! excelente el ejercicio

    ResponderEliminar
  3. el primer ejercicio solo cumple en algunos casos pero igual me sirvio

    ResponderEliminar
    Respuestas
    1. Hola compañero prueba con este programa:

      import java.util.*;

      public class Ejercicio1
      {
      public static void main(String args [])
      {
      Scanner tec = new Scanner(System.in);

      System.out.print("Escribe una frase: ");
      String frase = tec.nextLine();
      String pal = maxPal(frase);
      System.out.println("La palabra mas latga es " + pal + " y tiene " + pal.length() + " caracteres.");
      }

      private static String maxPal(String frase)
      {
      String palMax = "";
      String [] pal = frase.split(" +");

      for(int i = 0; i < pal.length; i++)
      if(pal[i].length() > palMax.length())
      palMax = pal[i];

      return palMax;
      }
      }

      Eliminar
    2. hola porfavor ayudeme con este ejercicio porfa es dificil:

      9) Escriba un algoritmo que solicite 10 letras del alfabeto cualesquiera, de manera que nos muestre el número de vocales y el número de consonantes ingresadas.

      Eliminar
  4. Hola necesito un Progrma que ala de cuando lo ejecute yo ingrese letras y me tire en numeros las letras y si ingreso numeros que el resultado me lo ingrese en letras..

    ResponderEliminar
  5. hola quiero un programa que Crear un vector de tipo cadena que almacene 10 elementos e imprimir la palabra java seguido del número de elemento.
    gracias

    ResponderEliminar
  6. hola quiero un programa que Crear un vector de tipo cadena que almacene 10 elementos e imprimir la palabra java seguido del número de elemento.
    gracias

    ResponderEliminar
  7. Buen inicio para dominar las cadenas en Java. A cada ejercicio se aceleraba mas la programación.

    ResponderEliminar
  8. Por favor alguien me podria ayudar con este ejercio:

    Considere el problema de formato de párrafo de texto para la impresión. El texto de entrada es una secuencia que consiste en las n palabras de longitud igual a L1, L2, ..., Ln (longitud de la palabra se mide en símbolos). Cuando se imprime un párrafo debe tener un formato elegante y colocado en varias líneas, cada una de las cuales se coloca sobre los caracteres M. Formulamos el criterio de formato "limpio". Si la cadena contiene las palabras de la i-ésima a la j-ésima y nos deja entre las palabras exactamente un espacio, el número restante de espacios igual a М – j + i - _𝑘=𝑖_𝑗_𝑙𝑘_, debe ser no negativo para todas las palabras caben en una línea. Queremos minimizar la cantidad de restos de cubo construidas en todas las líneas excepto la última. Formular un algoritmo basado en los principios de programación dinámicos, que muestra con precisión la sección de impresora se compone de n palabras. Analizar el tiempo de este algoritmo y de su funcionamiento requerido para la cantidad de memoria.

    ResponderEliminar
  9. quiero un programa que acepte 5 cadenas que pueda tener hasta 100 caracteres cada una y proporcione cuantas beses se encuentra un carácter que alguien me ayude con este programa

    ResponderEliminar
  10. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  11. 9) Escriba un algoritmo que solicite 10 letras del alfabeto cualesquiera, de manera que nos muestre el número de vocales y el número de consonantes ingresadas. ayudeme hacer este ejercicio

    ResponderEliminar
  12. Quero una programa k me lo determine la cantidad de consonantes en un diagrama de flujo porfa

    ResponderEliminar
  13. dadas 3 cadenas

    Mostrar que cadena finalizan con la misma palabra

    ResponderEliminar
  14. hola!me gustaria saber como hacer un programa que lea una cadena compuesta solo por letras y el espacio en blanco (verificarlo)

    ResponderEliminar
  15. Definir un proyecto de netbeans para resolver el siguiente problema. Utilizando la estructura de datos
    “lista simplemente ligada” introducir objetos creados a partir de una clase Producto, en donde se represente un tipo
    de inventario de una tienda de abarrotes, que tenga un método que permita mostrar los productos de un
    determinado valor dentro de una rango de precios que se especificará dentro de la lista de parámetros del método.

    ResponderEliminar
  16. programa que determine si una cadena es sub-cadena de otra cadena. Si la cadena de menor tamaño es una sub-cadena, entonces la función retorna 1, sino 0.

    ResponderEliminar