Problema - For

5 respostas
claudneto
package modulo2;   
  
import java.util.Scanner;   
  
public class Palindroma {   
       
    static Scanner sc = new Scanner(System.in);   
       
    public Palindroma() {   
    }   
       
    public static void main (String[] args) {   
        System.out.println ("Digite o texto: ");   
        String texto = sc.nextLine();   
        ePalindroma(texto);   
    }   
       
    public static void ePalindroma (String texto) {   
        int inicio = 0;   
        int fim = 0;   
        int espaco = 0;   
        for (int i = 0; i < texto.length() - 1; i++) {   
            for (int j = espaco + 1; j < texto.length(); j++) {   
                String s1 = "";   
                String s2= "";   
                if (texto.charAt(i) != ' ') {   
                    espaco = i;   
                    fim = i - 1;   
                    while (fim >= inicio) {   //Cria a palavra ao contratio
                        s1 = "";   
                        s1 = s1 + texto.charAt(fim);   
                        fim--;   
                    }   
                    while (fim >= inicio) {   //Cria a palavra normal
                        s2 = "";   
                        s2 = s2 + texto.charAt(inicio);   
                        inicio++;   
                    }   
                    if (s1.equals(s2)) {   //Verifica se a palavra invertida é igual a normal
                        System.out.println (s2 + " é palíndroma.");                }   
                    else {   
                        System.out.println (s2 + " não é palíndroma.");   
                    }   
                }                   
            }               
        }   
    }   
}

Estou tentando fazer esse programa funcionar. Ele recebe um texto e imprime as palavras que são palindromas e as que não são...

Tem algum erro no for eu acho...ele recebe o texto e imprime a primeira se é palindroma ou não, mas a partir da segunda...ele imprime muitas vezes...se o texto tiver 3 palavras...ele vai imprimir como se tivesse umas 10 palavras...

Obs.: Palindromas são palavras que, lidas de trás pra frente, tem a mesma formação (ordem de letras), por exemplo: rir, arara...

O System.out.println só vai ser executado quando ele encontrar um " "...mas ele tá sendo executado muitas vezes...

Digite o texto: rar arara é palíndroma. é palíndroma. é palíndroma. é palíndroma. é palíndroma. é palíndroma. é palíndroma. é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma. não é palíndroma.

5 Respostas

von.juliano
Vo te mostrar uma forma mais fácil de fazer isso, ok?
String palavra = "arara";
StringBuilder sb = new StringBuilder(palavra).reverse();
		
if(sb.toString().equals(palavra))
	System.out.println("É palindroma");
else
	System.out.println("Não é palindroma");
Blz? Flw! :thumbup:
alucardeck

não resisti :P

vamos transformar o seu programa todo..
nisso

String texto = "A arara comeu um ovo";

		
for(String x : texto.split(" ")){
	System.out.print(x);
	StringBuilder sb = new StringBuilder(x).reverse();
					
	if(sb.toString().equals(x))
		System.out.println(" -- É palindroma");		
    else
		System.out.println(" -- Não é palindroma");
}

Saida:

A -- É palindroma
arara -- É palindroma
comeu -- Não é palindroma
um -- Não é palindroma
ovo -- É palindroma

claudneto

Caracaaa…

StringBuilder é loko…dá pra fazer tudo com StringBuilder (claro que mexer com numeros não dá!)…

Vou dar uma estudada nisso…me aprofundar!

Vlwwwwww…Mas calma…o split…ele separa por aquele char que tá no () e imprime ele…dai faz td q ta no for e dpois volta dpois do " "?

Por exemplo: "A arara comeu um ovo."

A -> imprime A e faz td do for…
Volta no a do arara…

claudneto

Outra coisa…

for(String x : texto.split(" "))

Esse for funciona como?

Eu só conheço o for(inicialização; condição; incremento)

alucardeck
  1. http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#split(java.lang.String)

  2. é o Enhanced For
    for(objeto : array)

o split retorna um array de Strings…
então o objeto do “enhanced for” será um String ‘x’…

a cada loop ele instancia esse X com o proximo valor do array de Strings…
e assim executa os metodos dele…

caso não entender, procure no forum que tem informações sobre isso =)

Criado 25 de setembro de 2008
Ultima resposta 25 de set. de 2008
Respostas 5
Participantes 3