Zyto
Setembro 25, 2009, 7:14pm
#1
Boa noite a todos.
Estou criando uma classe, porem esta apresentando os erros da seguinte forma:
Funcionario.java:25: illegal start of expression
void mostraFunc()
^
Funcionario.java:25: ‘;’ expected
void mostraFunc()
^
2 errors
Segue abaixo o codigo da classe completo, a partir do metodo mostraFunc que começou a dar o erro:
class Funcionario{
// atributos func
String nomeFunc;
String departamentoFunc;
double salarioFunc;
String admissaoFunc;
String rgFunc;
boolean ativo;
// metodo bonifica func
void bonifica(double aumento){
double novoSalarioFunc = this.salarioFunc + aumento;
this.salarioFunc = novoSalarioFunc;
}
// metodo demite func
void demite(){
if (this.ativo = false)
System.out.println("Funcionario demitido!");
else if (this.ativo = true)
System.out.println("Funcionario em atividade!");
// metodo mostra tudo func
void mostraFunc(){
System.out.println("Nome: " + this.nomeFunc);
System.out.println("Departamento: " + this.departamentoFunc);
System.out.println("RG: " + this.rgFunc);
System.out.println("Admitido: " + this.admissaoFunc);
System.out.println("Salario: " + this.salarioFunc);
System.out.println("Status Funcionario: " + this.demite);
}
}
}
Obrigado a todos.
Voce está fazendo comparação com “=” e não “==”
void demite(){
if (this.ativo == false) // ANTES: if (this.ativo = false)
System.out.println("Funcionario demitido!");
else if (this.ativo == true) //ANTES: else if (this.ativo = true)
System.out.println("Funcionario em atividade!");
}
//VOCE ESQUECEU DE FECHAR O void demite
a) Tudo que você abre, tem de fechar. Você está esquecendo de fechar as coisas. Você fechou o método “demite”?
b) Cuidado - para fazer comparações, você precisa usar “==”, não “=”. (veja a comparação com true e false que você fez depois).
Se você for rodar o programa fazendo só a correção do item a), vai ver que ele vai até compilar, mas vai rodar errado.
De qualquer maneira, não é muito “bonito” fazer comparações com “true” e “false”. Eu normalmente escreveria assim:
String statusDemitido () {
if (this.ativo) {
return "Funcionario em atividade!";
} else {
return "Funcionario demitido!";
}
}
.......
System.out.println("Status Funcionario: " + this.statusDemitido());
você está usando para comparação um = só e tem que ser dois == ou seja
[code] if(a==b){
}
[/code]
Zyto
Setembro 25, 2009, 7:38pm
#6
Ae obrigado a todos pela rapida ajuda prestada.
Realmente foi erro meu em não prestar atenção nas coisas que aberem e fecham.
No momento compilou legal.
Agora vou fazer um MAIN para testar e se der certo eu posto aqui.
Obrigado a todos novamente.
Aproveitando para falar em beleza. Também não acho bonito colocar um else, caso tenha um returno dentro do if. Portanto, também daria para escrever assim:
String statusDemitido () {
if (this.ativo) {
return "Funcionario em atividade!";
}
return "Funcionario demitido!";
}
Essa abordagem pouca muita identação. Fora que deixa claro que aquele if termina a execução do método, e não há necessidade de avaliar fora dele.
Agora, como esse é um caso simples, ficaria ainda mais bonito usar o ternário:
String statusDemitido () {
return this.ativo ? "Funcionario em atividade!" : "Funcionario demitido!";
}
E existem mesmo 1001 maneiras de preparar Neston…
Zyto
Setembro 25, 2009, 7:58pm
#8
Ae povo quanto ao status demitido ficou certo e compilou legal.
Porem estou com outro problema na hora de testar.
TestaFuncionario.java:12: cannot find symbol
symbol : method mostra()
location: class Funcionario
func1.mostra();
^
1 error
Classe principal
[code]class Funcionario{
// atributos func
String nomeFunc;
String departamentoFunc;
double salarioFunc;
String admissaoFunc;
String rgFunc;
boolean ativo;
// metodo bonifica func
void bonifica(double aumento){
double novoSalarioFunc = this.salarioFunc + aumento;
this.salarioFunc = novoSalarioFunc;
}
// metodo demite func
void demite(){
if (this.ativo == false) // ANTES: if (this.ativo = false)
System.out.println("Funcionario demitido!");
else if (this.ativo == true) //ANTES: else if (this.ativo = true)
System.out.println("Funcionario em atividade!");
}
// metodo mostra tudo func
void mostraFunc(){
System.out.println("Nome: " + this.nomeFunc);
System.out.println("Departamento: " + this.departamentoFunc);
System.out.println("RG: " + this.rgFunc);
System.out.println("Admitido: " + this.admissaoFunc);
System.out.println("Salario: " + this.salarioFunc);
}
}
[/code]
Programa de Teste
class TestaFuncionario {
public static void main(String[] args){
Funcionario func1 = new Funcionario();
func1.nomeFunc = "Anderson";
func1.salarioFunc = 100;
func1.bonifica(50);
func1.departamentoFunc = "Adm Redes";
func1.admissaoFunc = "Janeiro/2009";
func1.rgFunc = "000.000.000.00";
func1.mostra();
}
}
Seu método é mostraFunc() e vc tá chamando mostra().
CrOnNoS
Setembro 25, 2009, 8:51pm
#10
nome do seu método é mostraFunc() e não mostra() como você está tentando usar no main
recomendo você tentar resolver esses problemas lendo o que o compilador diz antes de postar.
Zyto
Setembro 25, 2009, 9:06pm
#11
ae cristiano e cronos,
valew pela dica.
peço desculpa pela minha desatenção é que eu estou começando agora com o java e estou estudando sozinho.
daqui em diante vou tentar verificar esses erros que eu peguei e os proximos antes de postar aqui.
mesmo assim muito obrigado pela ajuda de todos neste topico.
Ao moderador se quiser tratar com resolvido a vontade.
Obrigado.
1 curtida
Na verdade, não sou eu que ponho como resolvido, é você mesmo.
Vá até o seu primeiro post , clique em editar e, bem no assunto , escreva [Resolvido].