Capicua

Ola pessoal, sou iniciante em java e não estou a conseguir resolver esse exercicio, podiam me ajudar?

Escreva o programa Capicua, o qual testa se uma palavra, introduzida pelo utilizador é ou não uma
capicua. Exemplos: “ana”, “ele”, “matam”, “ovo”, “radar”, “e”, “rapar”, “osso”, “reviver”, “socos”.

Você pode usar o metodo reverse do StringBuilder ou fazer um for sobre os caracter’s. Vou colocar as duas formas e você adequa conforme a necessidade. Obs. não fazia a minima ideia o que era Capicua. Espero que te atende.

    public static void main(String[] args) {
        String v1 = "ana";
        String v2 = "raul";
        
        if(new StringBuilder(v1).reverse().toString().equals(v1)){
            System.out.println("Valor 1 é Capicua!");
        }
        if(new StringBuilder(v2).reverse().toString().equals(v1)){
            System.out.println("Valor 2 é Capicua!");
        }
        
    }

Ou

public static void main(String[] args){
        StringBuilder nomeReverse = new StringBuilder();
        String nome = "ana";
        //String nome = "raul";
        char[] in = nome.toCharArray();

        for (int i = in.length-1; i >= 0; i--) {
            nomeReverse.append(in[i]);
        }
        
        if(nomeReverse.toString().equals(nome)){
            System.out.println("Este nome é Capicua! "+nome);
        }else{
            System.out.println("Não é capicua! "+nome);
        }
    
    }
1 curtida

capiuca seria um… palindromo?

de qq forma, a string “ana”, se lido de traz pra frente, tem as mesmas letras né?

com o metodo length() vc descobre o tamanho da string.

com o metodo charAt( x ) vc pega o caracter na posição x ( começa em zero )

basta fazer um laço e comparar os chars

1 curtida

Podias fazer as instruções pfvr?

O que você já conseguiu fazer?

:thumbsup:

public class Teste {

    	public static void main(String[] args) {	
    		
    		String palavra = new String("preguiça");
    		
    		String palavraReverso = new String();
    		
    		for (int i = palavra.length() -1; i >= 0; i--) {			
    			palavraReverso += palavra.charAt(i);
    		}
    		
    		System.out.println("original: " + palavra + " ; reverso: " + palavraReverso);
    		
    		if(palavraReverso.equals(palavra)){
    			System.out.println("São iguais");
    		}else{
    			System.out.println("Não são iguais");
    		}

    	}

    }

Fiz da seguinte forma e resultou:

/Teclado/
import java.util.Scanner;

public class Capicua {

public static void main(String[] args) {
    Scanner teclado = new Scanner(System.in);
    System.out.println("Insira a palavra: ");
    System.out.print("=> ");
    String palavra = teclado.nextLine();
    if (new StringBuilder(palavra).reverse().toString().equals(palavra)) {
        System.out.println("É capicua!");
    } else {
        System.err.println("Não é capicua!");
    }

}

}

Muito obrigado.

Seu exemplo está errado, o que vc descreveu são palíndromos

Capicua, é o número palíndromo, ou seja, um palíndromo formado apenas por números

Ex: 11211, 111, 45654…

Caso não acredite em mim, talvez a wikipédia o convença.

Talvez a descrição do programa esteja errada.
Segundo a wikipédia "...cujo reverso é ele próprio."
É o que eu precisava, mas funciona também com palavras
Origado.

Já teve gente no fórum com exatamente a mesma dúvida, que foi solucionada no seguinte post, veja:

1 curtida