[Dúvida] Um polídromo que leia uma sequencia de palavras

5 respostas Resolvido
java
V

Estou com um duvida, digamos que eu não estou conseguindo “acumular” os valores digitados pelo usuário, o meu programa só é capaz de analisar uma unica palavra e o problema pede o seguinte: Faça um programa que leia uma sequência de palavras até encontrar um palíndromo (palavra cuja leitura da esquerda para a direita é igual à da direita para a esquerda).
Deve implementar um módulo para verificar se uma palavra é um palíndromo, isto é, o módulo recebe uma palavra e retorna a indicação se essa palavra é ou não um palíndromo.
O programa deve mostrar o número de palavras lidas que antecedem o palíndromo.
Mas eu não faço ideia como atender a essa condição

import java.util.Scanner;

public class Polidromo {

public static void main(String[] args) {

    String palavra;
    boolean econtrou = false;

    Scanner scanner = new Scanner(System.in);

    do {

        System.out.println();
        palavra = scanner.next();
        econtrou = checkPalindrome(palavra);

    } while (!econtrou);
    

    System.out.println(palavra + "é um palindrome!");

}

public static boolean checkPalindrome(String pal) {
    boolean resposta = true;
    pal = pal.toLowerCase();
    int tamanho = pal.length();
    
    for (int i = 0; i < tamanho / 2; i++) {
        if (pal.charAt(i) != pal.charAt(tamanho - 1 - i)) {
            
            resposta = false;
            break;
        }
    }
    return resposta;
}

}

5 Respostas

D

Digamos ou é isso que está acontecendo?

Se só tem uma variável, você só vai armazenar uma palavra né? Cadê o vetor que armazena mais de uma palavra?

I

Uma maneira de fazer (mas só lê uma palavra e não frases)…

import java.util.Scanner;

public class Palindromo {
	private boolean verificarPalavra(String palavra){
		short index = 0;
		short contador = 0;
		int tamanho = palavra.length();
		String vocabulo = palavra.toUpperCase();
		
		for(int i = (tamanho - 1); i >= 0; i--){
			if(vocabulo.charAt(index) == vocabulo.charAt(i))
				contador++;
				
			index++;
		}
		
		if(contador == tamanho)
			return true;
		
		return false;
	}
	
	public static void main(String[] args){
		boolean resultado = false;
		String termo = null;
		Scanner leitor = new Scanner(System.in);
		Palindromo palindromo = new Palindromo();
		
		System.out.print("Informe a palavra a ser verificada: ");
		termo = leitor.next();
		resultado = palindromo.verificarPalavra(termo);
		
		if(resultado)
			System.out.println("A palavra " + termo + " é um palíndromo.");
		else
			System.out.println("A palavra " + termo + " não é um palíndromo.");
	}
}

Rodando…
image

I

Para várias palavras…

import java.util.Scanner;

public class Palindromo {
	private boolean verificarPalavra(String frase){
		short index = 0;
		short contador = 0;
		short numeroLetra = 0;
		int tamanho = frase.length();

		char[] letreiro = new char[tamanho];
		
		for(short l = 0; l < tamanho; l++){
			if(Character.isLetter(frase.charAt(l))){
				letreiro[contador++] = frase.toUpperCase().charAt(l);
			}
		}
		
		for(int i = contador - 1; i >= 0; i--){
			if(letreiro[index] == letreiro[i]){
				numeroLetra++;
				//System.out.println(letreiro[index] + " -> " + letreiro[i]);
				index++;
			}
		}
		
		if(numeroLetra == contador)
			return true;
		
		return false;
	}
	
	public static void main(String[] args){
		boolean resultado = false;
		String termo = null;
		Scanner leitor = new Scanner(System.in);
		Palindromo palindromo = new Palindromo();
		
		System.out.print("Informe a palavra a ser verificada: ");
		termo = leitor.nextLine();
		resultado = palindromo.verificarPalavra(termo);
		
		if(resultado)
			System.out.println("O texto " + termo.toUpperCase() + " é um palíndromo.");
		else
			System.out.println("O texto " + termo.toUpperCase() + " não é um palíndromo.");
	}
}

Rodando…

image

S
Solucao aceita
int palavrasQueAntecedem = -1;
do {
    palavrasQueAntecedem++;
    System.out.println();
    palavra = scanner.next();
    econtrou = checkPalindrome(palavra);

} while (!econtrou);
System.out.println(palavrasQueAntecedem + " palavras antecedem o palindromo");
V

Está acontecendo

Criado 30 de outubro de 2019
Ultima resposta 31 de out. de 2019
Respostas 5
Participantes 4