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);
}
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.
[quote=BrunoCarlo]
Simples, o metodo não retorna nada, void, e vc tá tentando imprimir o retorno dele.[/quote]
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?
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)
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
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.
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 .
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
[quote=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??[/quote]
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