while(n.equalsIgnoreCase("I")){
System.out.println("\n* Cadastro de funcionario:\nDigite I para novo funcionario. Digite F para finalizar. Digite E para exibir os dados.");
n = t.leString();
System.out.println("_______________________");
if (n.equalsIgnoreCase("F")){
System.exit(0);
}
else if(n.equalsIgnoreCase("I")){
e = new Funcionario(t.leString("Nome do funcionario: "),
t.leDouble("Salario: "),
t.leInt("numero de dependentes:"),
t.leString("Rua: "),
t.leString("Cidade: "),
t.leString("UF: "),
t.leString("Cep: "));
System.out.println("..............................");
}
else if(n.equalsIgnoreCase("E")){
System.out.println("Dados: " + e.exibeDados());
}
Meu problema é com a linha System.out.println("Dados: " + e.exibeDados());
Tá dando a mensagem “‘void’ type not allowed here”
O método exibeDados:
public void exibeDados(){
System.out.println(nome);
System.out.println(salario);
System.out.println(numDeDependentes);
System.out.println(endDoFuncionario);
}
Simples, o metodo não retorna nada, void, e vc tá tentando imprimir o retorno dele.
R
Rafael_Marques
Oi natz.
Tentar chamar apenas o método exibeDados() ao invés de chamá-lo dentro de um System.out, pois este aguarda uma string, e como seu método não retorna nada, não vai funcionar.
Nesse lina 01:
System.out.println("Dados: "+e.exibeDados());
Coloque:
e.exibeDados();
natz
BrunoCarlo:
Simples, o metodo não retorna nada, void, e vc tá tentando imprimir o retorno dele.
Sim, mas não tenho como implementar método que retorne, pois são variáveis de tipos diferentes, a não ser que eu faça um método para cada variável. Têm alguma possibilidade de um método retornar variáveis de tipos diferentes?
R
Rafael_Marques
Vc não precisa retornar, apenas chame o método de imprimir dados. :lol:
natz
Não, mas não funciona, continua dando o mesmo erro…
Eu acho que tem algo errado na sintaxe do método (porque ele fica dizendo que não pode ser void e tal), ou pode ser porque tá chamando dentro do main?
(eu já tirei do main e o erro mudou de face, diz que a variável não foi iniciada, apesar de ela ter sido :S)
alucardeck
vc nao pode usar o comando System.out.println("Dados: " + e.exibeDados());
pq?
pq vc esta mandando imprimir o retorno do e.exibiDados()…
e o retorno q vc colocou nele é VOID… e void significa q nao retorna nada… entao nao pode ser “imprimido” na tela
W
WillyKocher
ainda agora peguei um erro desse aqui tava tentando imprimir um e.printStackTrace() dentro de um System.out.println, e não da porque a impressao na verdade e feita dentro do metodo, então não faz sentido pedir pra imprimir o retorno dele… se voce quizer mesmo imprimir desse jeito ae, voce tem que rever seu metodo exibeDados, e fazer com que ele retorne uma String.
natz
Aaaaaaaaaaaaaah, tá intendi. Fiz isso, deixei o e.exibeDados(); fora do S.O.PLN(); e deu certo, só que o erro agora é “variable e might not have been initialized”, a variável não foi inicializada, ou “cannot find symbol variable e”, variável e não encontrada .
COMO NÃÃO??
rmendes08
O método exibeDados:
public void exibeDados(){
System.out.println(nome);
System.out.println(salario);
System.out.println(numDeDependentes);
System.out.println(endDoFuncionario);
}
Alguma dica? :roll:
Minha sugestão: substitua o método exibeDados por esse aqui:
Assim você pode concatenar os dados do seu objeto com qualquer string, ou usá-lo como parâmetro para System.out.println()
alucardeck
eh pq a linha
e=new...
esta sendo inicializada dentro de um dos IF ELSEs…
entao tem a chance do new nao acontecer…
e o programa mandar executar o metodo exibeDados… sem ela ser inicializada…
por mais q vc possa saber q o codigo funcionaria… o Eclipse nao sabe…
ele trabalho com a possibilidade de tudo acontecer… e pra ele, isso poderia acontecer…
entao vc poderia… colocar o exibeDados dentro do IF ELSE do New…
ou dar NEW antes do IF começar…
ai vc manda setar os valores por um metodo (onde seria o NEW atual q vc esta usando)
e no final exibe
W
WillyKocher
natz:
Aaaaaaaaaaaaaah, tá intendi. Fiz isso, deixei o e.exibeDados(); fora do S.O.PLN(); e deu certo, só que o erro agora é “variable e might not have been initialized”, a variável não foi inicializada, ou “cannot find symbol variable e”, variável e não encontrada .
COMO NÃÃO??
bom ja explicaram acima resumindo… um
Funcionario e = null; no lugar de só Funcionario e; como eu acho que vc pós na declaração deve resolver