Erro illegal start of expression! Algume pode me ajudar?[RESOLVIDO]

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]
:slight_smile:

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…

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().

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.

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]. :wink: