Alguém pode me ajudar? Erro ao compilar: Missing return statement
13 respostas
L
Lys_Marie
Prezados,
Estou estudando Java e me deparei com um programinha bem simples. Entretanto, aparece um erro que não consigo entender por qual razão ele está dando no ponto do código. O erro é "misssing return statement" e ocorre no método "setNome(String n)", mais especificamente na linha 46 do código. Poderiam me dizer como estar resolvendo essa situação? Desde já fico agradecida!!
Segue abaixo o código:
importjava.util.*;classEmpregado{publicEmpregado(intnum,Stringn,doubles,GregorianCalendard){numero=num;nome=n;salario=s;dataContratacao=d;}publicvoidprint(){System.out.println(numero+" "+nome+" "+salario+" "+anoContratacao());}publicvoidaumentaSalario(doublepercentualDeAumento){salario=salario*(1+(percentualDeAumento/100));}//método que altera a data de contratação usando a classe GregorianCalendar.publicvoidalteraDataContratacao(intano,intmes,intdia){dataContratacao.set(Calendar.YEAR,ano);dataContratacao.set(Calendar.MONTH,mes);dataContratacao.set(Calendar.DATE,dia);}//método que retorna o ano de contratação usando a classe GregorianCalendar.publicintanoContratacao(){returndataContratacao.get(Calendar.YEAR);//return dataContratacao.getYear();}publicStringgetNome(){returnnome;}//este método está dando erro: missing return statement.publicStringsetNome(Stringn){nome=n;}privateintnumero;privateStringnome;privatedoublesalario;privateCalendardataContratacao;//variável que possui a data de contratação.}
Olá, o erro é que vc colocou retorno no metodo mas não retorna nada:
Errado:
publicStringsetNome(Stringn){nome=n;}
Como é um metodo set vc pode colocar o retorno dele como void:
publicvoidsetNome(Stringn){nome=n;}
Agora sim
Espero ter ajudado.
L
lgweb
recapitulando…
Metodos set use void
metodos get use String Integer …
T
thingol
Não seja tão bitolado assim.
Em alguns casos é interessante retornar a referência ao próprio objeto, ou seja, this (embora os setters padrão Javabeans sempre sejam void). Isso é feito quando se quer usar “fluent programming”.
A
Alessandro_Alves
Oi KassiPretti, eh o seguinte em java vc pode retornar ow nao oq significa isso, quando vc declara um metodo do tipo void ele naum tem nenhum tipo de retorno mas quando vc declara metodos com alguma tipagem ele tem que retorna o tipo declarado
no seu caso vc declarou um metodo do tipo String portanto o metodo devera retorna pra vc uma String
public String getNome(){
return nome;
}
E geralmente em metodos de retorno nao se passa parametro somente quando vc esta setando
public void setNome(String nome){
this.nome = nome;
}
bom espero ter ajudado
abrcs
L
lgweb
pooootz q cara ignorante, o zé ruela no caso dela ela resolveria assim só isso que eu quis dizer tá o mal educado bitolado e a sua vó zé ruela!
cada mané que aparece por aqui e ainda e moderador um tonto desse!
Kassiane_Pretti
Oi Alessandro_Alves acho que eu não me expressei direito, o primeiro caso que mostrei foi o erro cometido pela Lys, o certo vem logo abaixo.
No caso do metodo set retornar ou não alguma coisa cabe o que o programador deseja, mas geralmente o set não apresenta retorno. Já nos métodos get eles sempre apresentaram retorno, pois é para isso que eles são implementados. Até temos o operador this para especificar o retorno da propria variavel da classe.
Espero que tenha entendido agora
A
Alessandro_Alves
O que aconteceu no seu codigo foi o seguinte, vc tentou passar pra um metodo void um tipo de retorno no vc o declarou como String e depois setNome, isso pra java nao tem problema oq acontece e por convensao eh que metodos que devem ter retorno na declaracao vc colo o get e no metodos do tipo void vc coloca set era isso que eu queria te explicar.
Bom quanto aos metodos sets caso vc esteja dentro da normas eles nunca retornaram nd somente modificam
Ainda mais quando setY/setZ for algo mais 'fluente'.
Kassiane_Pretti
Isso peczenyj o tipo de retorno de um set depende do programador, claro que temos padrões, mas nada impede o set retornar algo.
davidbuzatto
lgweb:
Não seja tão bitolado assim.
Em alguns casos é interessante retornar a referência ao próprio objeto, ou seja, this (embora os setters padrão Javabeans sempre sejam void). Isso é feito quando se quer usar “fluent programming”.
pooootz q cara ignorante, o zé ruela no caso dela ela resolveria assim só isso que eu quis dizer tá o mal educado bitolado e a sua vó zé ruela!
cada mané que aparece por aqui e ainda e moderador um tonto desse!
Calma… O thingol só quis tentar abrir sua mente p/ não ficar seguindo receitas como se as mesmas fossem verdades absolutas e aplicáveis a todas as situações… Não precisa estressar…
Concordo com o thingol, pq vc deu a entender que tem que decorar regrinha como se tivesse na escola:
X faz isso
Y faz aquilo…
Mas ele não quis te ofender…
Até mais!
L
Lys_Marie
Muito obrigada pessoal! Todos me ajudaram. Mas gostaria de saber o que vem a ser “fluent programming”.
Grata,
Kassiane_Pretti
Explicando de maneira informal temos que fluent programming seria uma programação mais facil de visualizar (intuitiva) seguindo certos padrões estabelecidos como uma boa prática de programação.