Não consigo achar o erro

15 respostas
H
Colegas eu estou estudando a linguagem Java e estou fazendo alguns exercicios. O programa funciona mas tentei fazer algumas alterações e deu um erro que eu não sei como resolver eu não vou colocar todo o codigo. Mas se precisar eu coloco. Neste metodo eu quero receber o nome digitado. e não estã dando. abraço
private void varrer(String nome)

   {
      
        String tamanho;
        String maior_tamanho = null  ;
        String maior_palavra = null ;
       for (int i=0; i<nome;i++)  // O erro está neste for. No netbeens diz que o operador > não pode ser aplicado para int. java. lang. string. 
          {
              tamanho = nome;
               if(tamanho.length()> maior_tamanho.length())
              {
                  maior_palavra =tamanho;
                  
                 // System.out.println("Maior Nome\t"+ maior_palavra);

                 
               }     else
               {
                      maior_palavra = maior_tamanho;
                    //  System.out.println("Maior"+maior_tamanho);
                       
                
               }

 }
         
          

    }

  }

15 Respostas

pvrsouza

Tente assim:

private void varrer(String nome){ String tamanho; String maior_tamanho = null ; String maior_palavra = null ; for (int i=0; i<nome.length();i++){ tamanho = nome; if(tamanho.length()> maior_tamanho.length()){ maior_palavra =tamanho; // System.out.println("Maior Nome\t"+ maior_palavra); }else{ maior_palavra = maior_tamanho; //System.out.println("Maior"+maior_tamanho); } } } }

BONUS:
Se quizer passar uma frase e saber qual a frase que tem a maior quantidade de letras desconsiderando os espaços:

String frase = "Quantas letras eu tenho"; int a = frase.length(); int b = frase.replace(" ","").length(); System.out.println(b);

P.S: Eu não testei. Fiz aqui direto no guj. Teste e veja se deu certo!

Abraços.

Poneis123

o pvrsouza adicionou um .length() ali no nome para ser comparado com o tamanho da String. Mas do jeito q ta ainda vai dar um problema:

qdo vc declara String maior_tamanho = null

e lá em baixo vc chama o maior_tamanho.length() isto dará um NullPointerException, pois vc ta chamando um método de um objeto nulo.

Num consegui entender mto bem o q vc ta querendo fazer com este método, a sua variavel maior_tamanho não deveria guardar o maior tamanho de palavra encontrada? ou seja guardar um número com o tamanho da palavra?

pvrsouza

Poneis123:
qdo vc declara String maior_tamanho = null

e lá em baixo vc chama o maior_tamanho.length() isto dará um NullPointerException, pois vc ta chamando um método de um objeto nulo.


Verdade.

Verdade tb.

Agora com essas dicas ele consegue fechar o problema!

H
Meu amigo é isso ai. eu quero saber o tamanho da palavra. Ok. vou colocar o codigo todo. Tentei dar um length() ai o erro da no parametro que eu comentei abaixo. Abraço
import javax.swing.JOptionPane;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author m53120
 */
public class Principal
{
   public Principal()
   {
       Pessoa p = new Pessoa("Rolf","000",40);
        Pessoa p1 = new Pessoa();
        p1.setIdade(50);
        String maior_palavra = "";
        Pessoa[]vetor = new Pessoa[2];
        
       
        for(int x=0; x<vetor.length; x++)
        {
            vetor[x] = new Pessoa();
            String nome = JOptionPane.showInputDialog("Digita o seu Nome");
             varrer(nome);
             maior_palavra = varrer(nome); // O erro ocorre aqui. Será que não tem haver com a String?
             System.out.println("Nome:\t\t"+ maior_palavra);
         
            vetor[x].setNome(nome);
            System.out.println("Numero de Caracteres do Nome:\t"+vetor[x].nome.length());
            
             String idade = JOptionPane.showInputDialog("Digita a sua Idade");
            vetor[x].setIdade(Integer.parseInt(idade));
             idade(Integer.parseInt(idade));
            System.out.println("Idade"+idade);
             while (Integer.parseInt(idade)<=0)
             {
                 idade = JOptionPane.showInputDialog("Idade invalida.\nDigita a sua Idade");
                 vetor[x].setIdade(Integer.parseInt(idade));

                 System.out.println("Idade"+vetor[x].idade);

             }
            
            String cpf = JOptionPane.showInputDialog("Digita o cpf");
            vetor[x].setCpf(cpf);
            System.out.println("CPF"+ vetor[x].cpf);


             
        }
           
            }

            Colaboradores col = new Colaboradores();
   
 
   
 public static void main(String[] args)
    {
        new Principal();
    }
 
   public int idade(int x)
   {
       return x;
   }


   private void varrer(String nome)

   {
      
        String tamanho;
        String maior_tamanho = null  ;
        String maior_palavra = null ;
       for (int i=0; i<nome.length();i++)
          {
              tamanho = nome;
               if(tamanho.length()> maior_tamanho.length())
              {
                  maior_palavra =tamanho;
                  
                 // System.out.println("Maior Nome\t"+ maior_palavra);

                 
               }     else
               {
                      maior_palavra = maior_tamanho;
                    //  System.out.println("Maior"+maior_tamanho);
                       
                
               }



  }
         
          

    }





    }
Poneis123

Esse erro q ta dando ai, é pq vc ta falando que com isso:maior_palavra = varrer(nome);vc ta dizendo que a String vai receber o retorno do método varrer… mas o método varrer é void, ele não retorna nada… ai da erro. vc tem q corrigir o método varrer para retornar o q vc deseja.

Ainda corrigindo isso, vc vai ter alguns problemas, mas vamos por partes senão vai confundir… vai fazendo ai q aos poucos vc entende legal.

Vc ta usando alguma ferramenta(IDE) para fazer essa codificação? esse erro (erro de compilação) fica bem claro nas ferramentas.

pvrsouza

O que vc quer fazer afinal com o método varre()?
É comparar qual a maior palavra entre duas? Ou vc quer saber só o tamanho da palavra?

Eu não estou vendo sentido nisso:

String maior_tamanho = null ; String maior_palavra = null ;

Para ter “maior_palavra” se não passa mais de uma palavra para ser comparada?

Explique melhor seu problema.

H
É verdade eu estava usando um metodo void que não retorna nada. Agora deu certo troquei o metodo para string, mas dá um erro só que é o return. Da uma mensagem de[color=red] "return missing"[/color] E eu esto colocando o return no lugar certo eu acho pelo menos. Abraço por voces estarem me ajudando. abraço
private String varrer(String nome)

   {
      
        String tamanho;
        String maior_tamanho = null  ;
        String maior_palavra = null ;
       for (int i=0; i<nome.length();i++)
          {                                     // o erro acontece aqui nesta chave.
              tamanho = nome;
               if(tamanho.length()> maior_tamanho.length())
              {
                  maior_palavra =tamanho;
                  
                 // System.out.println("Maior Nome\t"+ maior_palavra);
                    
                 
               }     else
              
              {
                      maior_palavra = maior_tamanho;
                    //  System.out.println("Maior"+maior_tamanho);
 
                      return maior_palavra;  // colquei aqui e deu erro.                     
                
               }


           return maior_palavra; // Ai eu troquei e coloquei aqui tambem deu erro. 
  }
         
          

    }

 }
Poneis123

o seu return ta dentro do laço for.

Mas ainda apoio a pergunta do pvrsouza q q vc ta querendo fazer nesse varrer?

pvrsouza
halm:
É verdade eu estava usando um metodo void que não retorna nada. Agora deu certo troquei o metodo para string, mas dá um erro só que é o return. Da uma mensagem de[color=red] "return missing"[/color] E eu esto colocando o return no lugar certo eu acho pelo menos. Abraço por voces estarem me ajudando. abraço
private String varrer(String nome)

   {
      
        String tamanho;
        String maior_tamanho = null  ;
        String maior_palavra = null ;
       for (int i=0; i<nome.length();i++)
          {                                     // o erro acontece aqui nesta chave.
              tamanho = nome;
               if(tamanho.length()> maior_tamanho.length())
              {
                  maior_palavra =tamanho;
                  
                 // System.out.println("Maior Nome\t"+ maior_palavra);
                    
                 
               }     else
              
              {
                      maior_palavra = maior_tamanho;
                    //  System.out.println("Maior"+maior_tamanho);
 
                      return maior_palavra;  // colquei aqui e deu erro.                     
                
               }


           return maior_palavra; // Ai eu troquei e coloquei aqui tambem deu erro. 
  }
         
          

    }

 }

Seu retorno, como o Poneis123 falou, está no lugar errado!

private String varrer(String nome)

   {
      
        String tamanho;
        String maior_tamanho = null  ;
        String maior_palavra = null ;
       for (int i=0; i<nome.length();i++)
          {                                     // o erro acontece aqui nesta chave.
              tamanho = nome;
               if(tamanho.length()> maior_tamanho.length())
              {
                  maior_palavra =tamanho;
                  
                 // System.out.println("Maior Nome\t"+ maior_palavra);
                    
                 
               }     else
              
              {
                      maior_palavra = maior_tamanho;
                    //  System.out.println("Maior"+maior_tamanho);
 
                      return maior_palavra;  // colquei aqui e deu erro.                     
                
               }


            
  }
         
          return maior_palavra; // Aqui seria o luga certo
    }
Poneis123 :
Mas ainda apoio a pergunta do pvrsouza q q vc ta querendo fazer nesse varrer?
Insisto em saber qual o propósito do método varrer(). Até o nome eu acho que não seja semântico. Será que o nome varrer() se aplica a checar a quantidade de letras de uma String? Não seria melhor algo do tipo: contarCaracteres(String nome). Parece bobagem, mas muda muita coisa lá na frente!
Poneis123

Concordo. Já o contarCaracteres bastaria ele usar o String.length()… creio q ele ta querendo receber varios nomes e ir guardando o maior talvez…

H

Isso meu amigo. o metodo varrer é para saber qual o nome maior com maior carcteres. Mas o erro é so no return. Aonde eu posso colocar ele. Porque está errado ali aonde eu colquei. abraço

Poneis123

Coloca onde o pvrsouza falou… 1 chave para baixo da onde está.

pvrsouza

Me explique onde isso acontece no método varrer? Porque pelo que eu estou vendo, o método varrer() só verifica a quantidade de letras de uma única palavra, vide o parametro.

Sinceramente, eu acho que está fazendo o código usando a tentativa e erro. Pare e repense seu código.

pedroroxd

Qual o tipo da variável nome? String.
Qual o tipo da variável i? int.

Taí a resposta.

Poneis123

pedroroxd:
Qual o tipo da variável nome? String.
Qual o tipo da variável i? int.

Taí a resposta.

Podia dar uma lida nos posts né… esse problema ai ja foi resolvido faz tempo

Criado 7 de abril de 2010
Ultima resposta 7 de abr. de 2010
Respostas 15
Participantes 4