Tengo que obtener una entrada de texto del usuario y luego tengo que reemplazar cada vocal a,e,i,o,u por 1,2,3,4,5 y mostrar la cantidad de reemplazos para cada vocal y luego también el texto cambiado. El problema es que el texto al final se ve bien reemplazado, pero la cantidad de reemplazos se muestra como 1.
(Intenté hacerlo a continuación contando los 1,2,3,4 y 5 en "myText" y funciona perfectamente, pero también cuenta si el usuario ingresa un número, por lo que es un problema)
Aquí está la primera parte:
public static void replaceAndCount(String myText, int[] vowels) { for (int i = 0; i < myText.length(); i++) { switch (myText.charAt(i)) { case 'a': vowels[0]++; myText = myText.replace('a', '1'); case 'e': vowels[1]++; myText = myText.replace('e', '2'); case 'i': vowels[2]++; myText = myText.replace('i', '3'); case 'o': vowels[3]++; myText = myText.replace('o', '4'); case 'u': vowels[4]++; myText = myText.replace('u', '5'); } } }Tienes 2 problemas en tu código.
break en cada caso, de lo contrario, todos los casos debajo del caso coincidente también se ejecutarán. Ejemplo, case 'a': vowels[0]++; myText = myText.replace('a', '1'); break; case 'e': vowels[1]++; myText = myText.replace('e', '2'); break;replace(old,new) reemplazará todas las apariciones del carácter antiguo con nuevo. Por eso, la cantidad de reemplazos se muestra como 1 .Espero que este código a continuación funcione para usted
Código:
public class ReplaceVowels { public static void main(String[] args) { String myText = "aaaeiou"; int[] vowels = new int[5]; replaceAndCount(myText.toLowerCase(), vowels); } private static void replaceAndCount(String text, int[] vowels) { StringBuilder myText = new StringBuilder(text); for (int i = 0; i < myText.length(); i++) { switch (myText.charAt(i)) { case 'a': vowels[0]++; myText.setCharAt(i, '1'); break; case 'e': vowels[1]++; myText.setCharAt(i, '2'); break; case 'i': vowels[2]++; myText.setCharAt(i, '3'); break; case 'o': vowels[3]++; myText.setCharAt(i, '4'); break; case 'u': vowels[4]++; myText.setCharAt(i, '5'); } } for (int vowel : vowels) { System.out.println(vowel); } System.out.println(myText); }Puede consultar esto para reemplazar un solo carácter