Tutorial 10
Os doy la bienvenida a tutoriales Aprendiendo Java Facil! En el anterior tutorial
presentamos la clase String y los métodos más comunes usados. En este tutorial
estaremos resolviendo algunos ejercicios aplicando lo aprendido sobre la clase String.
Ejercicios:
1.- Dada una cadena mostrar por pantalla la cantidad de vocales que tiene. Ejemplo:
Entrada: cad = "Hola tu"
Salida: La cantidad de vocales es 3
2.- Dada una cadena invertir la misma y mostrar por pantalla. Ejemplo:
Entrada: "casa blanca"
Salida: "acnalb asac"
3.- Dada una cadena cad, y un caracter car, verificar cuántas veces se repite el carácter
car en la cadena cad, por ejemplo:
Entrada: cad = "casa blanca", car = 'a'
Salida: El caracter 'a' se repite 4 veces
Muy bien, nuevamente tratemos de analizar cómo podríamos resolverlo, qué estructura de
control podemos usar, entradas y salidas, etc. ¿Listo? Ok, comenzemos.
1.- Dada una cadena mostrar por pantalla la cantidad de vocales que tiene.
Ejemplo:
Entrada: cad = "Hola tu"
Salida: La cantidad de vocales es 3
Lo primero que hacemos es leer por pantalla la cadena, luego ya que cada carácter tiene
una posición en la cadena:
podemos recorrer la cadena posición por posición, ir preguntando si el carácter es vocal, si
lo es contamos +1, y final mostramos por pantalla la suma total que fuimos contando.
Antes de llevar a código esta lógica pensemos qué estructura de control podemos usar
para recorrer la cadena, preguntar carácter por carácter en una posición (varias veces la
misma acción con diferente posición de carácter), entonces necesitamos un iterador,
podría ser tanto un while como un for, iteramos mientras el indice que recorre sea menor
al tamaño de la cadena, en este caso el último indice que se puede preguntar es el 6, el
tamaño de la cadena es 7, perfecto, veamos la lógica en código usando for:
import java.util.Scanner;
public class CantidadVocales {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String cad = sc.nextLine(); //leemos la cadena
int cantidadVocales = 0;
//iteramos mientras el indice sea menor al tamanio total de
la cadena
for (int i = 0; i < cad.length(); i++) {
char car = cad.charAt(i); //obtenemos el caracter en la
posicion i
//si el caracter es igual a "a", "e", "i", "o", ó "u"
entonces es vocal
if (car == 'a' || car == 'e' || car == 'i' || car ==
'o' || car == 'u') {
cantidadVocales++; //contamos cantidad vocales +1
}
}
//mostramos por pantalla cantidad de vocales
System.out.println("La candidad de vocales es: " +
cantidadVocales);
}
}
Cuya salida de pantalla tendíamos:
Excelente, eso es todo, veamos el siguiente ejercicio.
2.- Dada una cadena invertir la misma y mostrar por pantalla. Ejemplo:
Entrada: "casa blanca"
Salida: "acnalb asac"
Hay muchas formas de solucionar este problema, iremos por una solución muy sencilla.
Primero ya sabemos como recorrer una cadena, lo que haremos es recorrer en forma
invertida almacenando en un segundo String cada caracter obtenido, donde al final del
recorrido sera impreso por pantalla, ¿suena fácil verdad? Veamos en código:
import java.util.Scanner;
public class CadenaInvertida {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String cadena = sc.nextLine(); //leemos la cadena
String cadenaInvertida = "";
//iteramos de forma invertida, partimos de la ultima
posicion valida
//hasta la primera posicion valida que el cero
//vamos disminuyendo el valor de i en una unidad -1
for (int i = cadena.length() - 1 ; i >= 0; i--) {
char car = cadena.charAt(i); //obtenemos el caracter en
la posicion i
cadenaInvertida = cadenaInvertida + car;
}
//mostramos por pantalla la cadena invertida
System.out.println("La cadena invertida es: " +
cadenaInvertida);
}
}
Y tenemos como salida de pantalla:
¿Sencillo no es cierto? Vamos al último ejercicio.
3.- Dada una cadena cad, y un caracter car, verificar cuántas veces se repite el
carácter car en la cadena cad, por ejemplo:
Entrada: cad = "casa blanca", car = 'a'
Salida: El caracter 'a' se repite 4 veces
Muy bien, este ejercicio es muy parecido al primer ejercicio, debo recorrer una cadena y
preguntar caracter por caracter si el obtenido es igual al que se busca. Lo que tenemos
que hacer es leer por pantalla una cadena y un caracter, y depende de ese caracter
realizamos la condicional y contamos +1, veamos ese bosquejo en código:
import java.util.Scanner;
public class CantidadCaracteres {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Ingrese la cadena:");
String cadena = sc.nextLine(); //leemos la cadena
System.out.println("Ingrese el caracter a buscar:");
String caracter = sc.next(); //ya que no contamos con un
metodo especifico para
//los caracteres entonces leemos como cadena, luego
obtenemos el primer
//caracter para almacenarlo en un char, que seria el char
que debemos buscar en
//la primera cadena ingresada
char car = caracter.charAt(0);
int cantidadRepeticiones = 0;
//iteramos hasta que el indice sea menor al tamanio de la
cadena
for (int i = 0 ; i < cadena.length() ; i++) {
char aux = cadena.charAt(i); //obtenemos el caracter en
la posicion i
if (aux == car) {
cantidadRepeticiones++;
}
}
//mostramos por pantalla la cantidad de repeticiones
System.out.println("La cantidad de repeticiones es: " +
cantidadRepeticiones);
}
}
Y tenemos como salida de pantalla: