Problema no return

E aew Galera blz?

então sou novo em Java… estou aprendendo por conta propria… é logico consultando um monte de Tutorial,

mais estou com um problema em um codigo… concerteza deve ser besteira… mais ai vai

Então nesse codigo queria que me retornasse que o funcionario foi demitido, o ruim é que ele da um problema na condicao, ele fala que não encontrou o simbolo na variavel condicao


class TestaFuncionario
{
	public static void main(String[] args)
	{
		Funcionario f1 = new Funcionario();
		f1.nome = "Fedora";
		f1.funcao = "Auxiliar";
		f1.departamento = "Auxiliacao";
		f1.salario = 600;
		f1.dataEntrada = "01/06/2006";
		f1.rg = "25.654.256-2";
		f1.bonifica(150);
		f1.condicao("demitido");

		if (f1.condicao == 1)
		{
			System.out.println("O Funcionario esta Desligado da Empresa");
		}
		else
		{
			System.out.println("Nome: " + f1.nome);
			System.out.println("Funcao: " + f1.funcao);
			System.out.println("Departamento: " + f1.departamento);
			System.out.println("Salario Atual: " + f1.salario);
			System.out.println(f1.dataEntrada);
			System.out.println(f1.rg);
		}




	}	
}

essa é a classe onde tá a condicao, assim agora ta com int mais ja tentei com string com boolean, alguem pode me ajudar vlw abraço

class Funcionario
{
	String nome;
	String funcao;
	String departamento;
	double salario;
	String dataEntrada;
	String rg;
	String demitido;
	

	int condicao(String situacao)
	{	
		if ( situacao == "demitido")
		{
			return 1;

		}
			return 2;
	}


	void bonifica(double aumento)
	{
		this.salario = this.salario + aumento;
	}

	
}

Olá Eduardo…

Pelo que eu entendi, o que esta errado é a comparação para ver se esta demitido…

Quando a variavel for string, necessariamente a comparação tem que ser com equals()…
Fiacaria mais ou menos assim…

if (f1.condicao.equals("1"))  

Espero que tenha te ajudado

cade o else da condição return 2 o seu if não ta completo

O problema esta em como vc está fazendo a comparação:

veja
http://www.guj.com.br/posts/list/81628.java#434680

você não precisa usar o this

salario = salario + aumento

se você assim tudo bem

void bonifica(double salario, double aumento)
{
this.salario = this.salario + aumento;
}

Você está enganado, não precisa de else algum no código da condição dele.
Pelo que vi o problema é o que o nosso amigo dedspr disse mesmo, ele teria que usar o .equals.

Abraços.

O colega respondeu a questão quando falou sobre o método equals da classe String

Na verdade elegante seria ele utilizar o else, mas ele não precisa :slight_smile:

Visto que se a condição não for contemplada, ele vai retornar dar retorno ao método, caso contrário vai executar o return 2

Sim gustavo! esta correto, mas é por questão de organização do codigo.

E ai galera, primeramente agradeço pela ajuda,

só que ainda está dando o mesmo erro vou colocar ele inteiro aqui

TestaFuncionario.java:15: cannot find symbol
symbol : variable condicao
location: class Funcionario
________________if (f1.condicao.equals(“1”))
___________________^

1 error

é isso ai que sai no prompt,

o codigo estou escrevendo em notepad, não sei se pode ter diferença,

vlw abraço

ahhh o equals eu coloquei agora para testar como o dedspr disse

e alterei na classe funcionario de int para String.

um codigo lipo e bem organizado fica mais facil para encontrar erros e reutiliza - los

Eduardo,

Na parte:

if (f1.condicao == 1)

você esta chamando condicao como se fosse um atributo de f1 e não
um metodo, e como f1 não tem atributo condicao, da um erro.

Enjambrando seria:

if (f1.condicao("demitido") == 1)

condicao() “com chaves é um metodo sem chaves é uma variável”
se você usar f1.condicao() tambem da erro pois essa função exige um
parâmetro, que você definiu como String na classe Funcionario.

Observe que na sua função condicao() retorna um valor “int” certo!!

int condicao( String situacao ) { if ( situacao == "demitido") { return 1; }else{ // não esqueça do else return 2; } }
Quando você executar essa função, ela vai retornar um int
que pode ser armazenado em uma variável.
ex:

int cond = f1.condicao("demitido");

depois podes executar a condição

if( cond == 1 ) //faça tal coisa else //faça outra coisa

Espero ter ajudado,

com chaves, pois se você colocar só f1.condicao, o java fai pensar
que é um atributo!!!

Vlw Galera!!

fiz oque o Alexwell falou e deu certo,

só mais uma pergunta, na primeira vez que fiz esse codigo eu tentei usar
uma variavel boolean, assim só para saber agora como ficaria,

mais vlw mesmo

ela so recebe true ou false

vlw galera deu certo,

pensei um pouco e vi que era só testar haeuhaeu foi mal

vlw mesmo