String, vetor, for

9 respostas
claudneto

Eu preciso fazer isso:

Depois eu tenho outro “exercício” pra fazer também…

Não são exercícios…pq eu nem tenho aula de programação…é só que um professor passou pra uns amigos meus e eu fiquei curioso em fazer…dai tentei e não consegui…

Eu não consigo “separar” as palavras…

Eu estava pensando em “separar as palavras” e verificar elas…mas por exemplo…um for pra separar e outro dentro pra verificar…

E sem usar substring(), StringBuffer…nada deste tipo…apenas com for!

9 Respostas

claudneto
package palindroma;

import java.util.Scanner;  
  
class Palindroma {  
  public static void main (String[] args) {  
    Scanner sc = new Scanner();  //ERRO NO CONSTRUTOR DA CLASSE SCANNER
    System.out.println("Digite o texto: ");  
    String texto = sc.nextLine(); //Recebe o texto  
    int inicio = 0, fim = 0, j = 0; //Inicializa as variáveis pra ser a posição do 1º e do último caracteres da palavra  
    for (int i = 0; i < texto.lenght; i++) { //ERRO NO LENGHT (LENGTH) DA VARIÁVEL
      char a;
      while (a != ' ') { //Percorre o texto até encontrar um " "  
        a = texto.charAt(j); //Verifica se o caractere é um " "  
        j++;  
      }  
      fim = j; //Posição do último caractere da palavra  
    }  
  }  
}

Ele mostra esses 2 erros que eu não sei como resolver!

Me ajudem por favor!

VantuilJose

Não resolvi tudo, mas achei dois erros:

A classe Scanner exige o System.in (entrada padrão, o console):

Scanner sc = new Scanner(System.in);

e na hora de comparar o certo é assim:

for (int i = 0; i < texto.length(); i++) {

length é um método, por isso exige as duas aspas no ínicio.

Sou iniciante em java, mas espero ter ajudado.

claudneto

o do for eu não tinha percebido…

o do Scanner eu percebi agora!

=]

Vlw

Ele diz que tem que inicializar a variável a (char)

Ai eu coloco char a = ‘’;

E ele não dexa…pq é vazio!

VantuilJose
Apanhei um pouquinho aqui mais consegue, dá uma olhada, percorro a string ao mesmo tempo, pra frente e pra trás, com o i e o length - i
package palindromos;

/**
 *
 * @author 02121
 */
import java.util.Scanner; 
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
         
  
         Scanner sc = new Scanner(System.in);  //ERRO NO CONSTRUTOR DA CLASSE SCANNER  
         System.out.println("Digite o texto: ");    
         String texto = sc.nextLine(); //Recebe o texto    

         //Retirar todos os espaços da palavara
         String semEspaco ="";
         for (int i = 0; i < texto.length(); i++) { //ERRO NO LENGHT (LENGTH) DA VARIÁVEL  
             char a = texto.charAt(i);
             
             if (a != ' ')
             semEspaco = semEspaco + a;
          }
         Boolean palindromo = true;
          for (int i = 0;i< semEspaco.length();i++){
              if (semEspaco.charAt(semEspaco.length()-i - 1) != semEspaco.charAt(i)){
                palindromo = false;
                break; //sai do loop
              }
          }  
         if (palindromo == true) System.out.println("É Palíndroma");
         else System.out.println("Não é Palíndroma");
    }    
}

Testei várias vezes e deu certo. Se encontrar algum problema posta ai, mas vale a pena tentar fazer sem copiar só usando essa idéia de percorrer "pra frente e pra trás" ao mesmo tempo.

Espero ter ajudado

jubei

Acabei de resolver um problema parecido. Falta ainda deixar o código mais funcional.

package inverte;

import javax.swing.JOptionPane;


class Inverte{
      static String InverteFrase(String x){
    
    String invertida="";
    
    
    for (int i =x.length()-1;i>=0; i--){
      invertida += (x.charAt(i));
    }
    return invertida;
}
  }
/**
 *
 * @author pessoal
 */

public class Main {

   
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
     
Inverte funcao = new Inverte();
String a = funcao.InverteFrase("ada");

System.out.println(a);

if (a == "ada"){
    System.out.println("esta palavra é um palindromo");
} 
    else{
    System.out.println("esta palavra não é um palindromo");        
    }
    
    }
}
claudneto

Blz…

Mas o que eu estou com dúvida agora…é tpw…

Eu “preciso” imprimir as palavras que são palindromas e as que não são…

System.out.println(palindromas);
System.out.println(não palindromas);

=x

Assim ele vê a frase inteira se é palíndroma ou não!

claudneto
jubei:
Acabei de resolver um problema parecido. Falta ainda deixar o código mais funcional.
package inverte;

import javax.swing.JOptionPane;


class Inverte{
      static String InverteFrase(String x){
    
    String invertida="";
    
    
    for (int i =x.length()-1;i>=0; i--){
      invertida += (x.charAt(i));
    }
    return invertida;
}
  }
/**
 *
 * @author pessoal
 */

public class Main {

   
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
     
Inverte funcao = new Inverte();
String a = funcao.InverteFrase("ada");

System.out.println(a);

if (a == "ada"){
    System.out.println("esta palavra é um palindromo");
} 
    else{
    System.out.println("esta palavra não é um palindromo");        
    }
    
    }
}

Eu sei...fui "eu" que resolvi!

=)

claudneto

Seria “bom” eu usar ArrayList?

Tpw…eu pego a palavra e coloco num ArrayList…dai depois eu percorro a Lista e separo as Palindromas das não Palindromas…

Seria apresentável?

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) {
                        s1 = "";
                        s1 = s1 + texto.charAt(fim);
                        fim--;
                    }
                    while (fim >= inicio) {
                        s2 = "";
                        s2 = s2 + texto.charAt(inicio);
                        inicio++;
                    }
                    if (s1.equals(s2)) {
                        System.out.println (s2 + " é palíndroma.");                }
                    else {
                        System.out.println (s2 + " não é palíndroma.");
                    }
                }                
            }            
        }
    }
}

Tem alguma coisa errada ae no ePalindroma...Ele não funciona direito...

Criado 22 de setembro de 2008
Ultima resposta 23 de set. de 2008
Respostas 9
Participantes 3