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);
}
}
}
}
Não consigo achar o erro
15 Respostas
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.
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?
qdo vc declaraString maior_tamanho = nulle 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!
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);
}
}
}
}
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.
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.
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.
}
}
}
o seu return ta dentro do laço for.
Mas ainda apoio a pergunta do pvrsouza q q vc ta querendo fazer nesse varrer?
É 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çoprivate 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
}
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!
Concordo. Já o contarCaracteres bastaria ele usar o String.length()… creio q ele ta querendo receber varios nomes e ir guardando o maior talvez…
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
Coloca onde o pvrsouza falou… 1 chave para baixo da onde está.
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.
Qual o tipo da variável nome? String.
Qual o tipo da variável i? int.
Taí a resposta.
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