String de palavras onde o caracter " . " buga todo o sistema

3 respostas Resolvido
P

Boa noite pessoal, estou com o seguinte problema, possuo uma String chamada “banishedWords” em meu programa que serve para fazer o banimento de certos caracteres como " ", " - " , “_”, " ! ", estou com problema ao adicionar o “.”, pois ele buga totalmente o programa, se eu retirar esse " . " o programa funciona normal, o programa é para saber se uma palavra ou frase é um Palíndromo ou não. Segue o código:

import java.util.Scanner;

public class Application {

public static boolean palindrome(String str) {

	String[] banishedWords = { " ", "-", "_", "!", "\\?", "@", ",", "." };

	for (String x : banishedWords) {
		str = str.replaceAll(x, "");
	}
	int sizeStr = str.length();

	StringBuffer sb = new StringBuffer(str);
	sb.reverse();

	for (int i = 0; i < sizeStr; i++) {
		if (str.charAt(i) != sb.charAt(i)) {
			return false;
		}
	}
	return true;
}

public static void main(String[] args) {

	Scanner sc = new Scanner(System.in);

	System.out.println("Entre com uma frase ou palavra: ");
	String str = sc.nextLine().toLowerCase();

	if (palindrome(str)) {
		System.out.println("É um Palíndromo");
	} 
	else {
		System.out.println("Não é um Palíndromo");
	}
	sc.close();

}

}

3 Respostas

PedreiroDeSoftware
Solucao aceita

Coloque com escape:"\\.", por tratar-se de expressão regular.

P

Não tinha conhecimento sobre essas expressões regulares, e utilizei o escape no “?” e deixei passar isso, muito obrigado ! Voltarei as estudos

PedreiroDeSoftware

Sim.
Aqui um bom material sobre o tema regex: https://youtu.be/YPRbQG0GBME

Criado 23 de novembro de 2019
Ultima resposta 23 de nov. de 2019
Respostas 3
Participantes 2