Programming

T03-003-R1 Funciones con tipos estructurados (Opcional)

Enunciado

Sustituir caracteres de cadena con funciones

Queremos hacer un programa Java que sustituya, en una frase, todas las apariciones de un caracter, que le digamos, por otro que le digamos.

Por ejemplo:

Si en la frase "Esta tarde vamos a programar mucho", sustituimos las apariciones del caracter 'a' por el caracter '4', la frase quedaría así: "Est4 t4rde v4mos 4 progr4m4r mucho" 

Tendrás que usar métodos de la clase String para manejar cadenas. Es muy posible que tengas que usar los siguientes métodos:

  • charAt(n)
  • length()

Además, recuerda que puedes concatenar cadenas con el operador '+' o con el método concat (será más fácil con el operador +)

Además, para leer los datos desde la entrada, es muy posible que tengas que usar los siguientes métodos de la clase Scanner:

  • nextInt()
  • next()
  • nextLine()

ENTRADA

La entrada comienza con un número indicando cuántos casos de prueba habrá que procesar.

Cada uno de los casos está compuesto por:

  • una primera línea en la que aparecen los dos caracteres separados por un espacio: el caracter que hay que sustituir y el caracter por el que hay que sustituirlo.
  • una segunda línea en la que aparecerá la frase en la que queremos hacer esta sustitución

SALIDA

Por cada caso de prueba, el programa escribirá la frase resultante de haber hecho la sustición de los caracteres

RESTRICCIONES

No puede usarse el método de String que hace las sustituciones, sino que hay que programarlo a mano. Es decir, no se puede usar el método:

  • replace(x,y);

Deberá resolverse el problema diseñando una función que reciba una cadena de texto y dos caracteres y devuelva la cadena resultante de sustituir el primer caracter por el segundo en la cadena de entrada.

El programa principal, para cada uno de los casos, leerá los datos de entrada y usará la función para resolver el problema, imprimiendo posteriormente el resultado correspondiente.

Solución


											
import java.util.Scanner; public class FSusituirCaracteres { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String frase; char caracter1; char caracter2; int numCasos = 0; numCasos = sc.nextInt(); for (int i = 1; i <= numCasos; i++) { caracter1 = sc.next().charAt(0); caracter2 = sc.next().charAt(0); sc.nextLine(); frase = sc.nextLine(); System.out.println(cambiaCaracter(frase,caracter1,caracter2)); } } public static String cambiaCaracter(String frase, char origen, char destino) { String cadenaResultado = ""; for (int i = 0; i < frase.length(); i++) { if (frase.charAt(i) == origen) { cadenaResultado = cadenaResultado + destino; } else { cadenaResultado = cadenaResultado + frase.charAt(i); } } return cadenaResultado; } }

Input

5 e i A mi no me repliques a 4 Voy a cambiar letras por numeros en mi contrasenya v b Voy a hacer una vuena varvacoa en Barcelona n N El nene no sabia comer con tenedor b v Esta frase no contiene esa letra
5 e i A mi replicame a 4 Voy a cambiar letras por numeros en mi contrasenya v b Voy a hacer una vuena varvacoa en Barcelona n N El nene no sabia comer con tenedor b v Esta frase no contiene esa letra

Output

A mi no mi ripliquis Voy 4 c4mbi4r letr4s por numeros en mi contr4seny4 Voy a hacer una buena barbacoa en Barcelona El NeNe No sabia comer coN teNedor Esta frase no contiene esa letra
A mi riplicami Voy 4 c4mbi4r letr4s por numeros en mi contr4seny4 Voy a hacer una buena barbacoa en Barcelona El NeNe No sabia comer coN teNedor Esta frase no contiene esa letra