Erro no retorno

por que quando eu compilo a classe abaixo, o compilador devolve a mensagem " missing return statement " para o metodo saldo ? :roll:


public class Departamento
{	
   int num_conta, 
	    saldo_i_mes, 
		 total_itens, 
		 total_m_creditos, 
		 limite;

	public Departamento(int nc, int sim, int ti, int tmc, int l)
	{
		num_conta = nc;
		saldo_i_mes = sim;
		total_itens = ti;
		total_m_creditos = tmc;
		limite = l;
	}
	
	public int saldo(int nconta)
	{
		if(nconta == num_conta)
			return saldo_i_mes + total_m_creditos - total_itens;
	}
	
	public boolean verificaExcesso(int ncont, int lim)
	{
		if(ncont == num_conta)
			if( saldo(num_conta) > lim)
				return true;
		return false;
	}
}

pq vc tá colocando um retorno nele apenas dentro de um if…
imagine se o seu if dá false, o q aconteceria com o método? vc precisa colocar um retorno em um else ou apenas fora do if mesmo…

Cara é o seguinte, o método tem que retorna um valor invariavelmente de qualquer condição entende e ali diz que caso não seja satisfeita a condição ele não retorna nada! então oque vc pode fazer é o seguinte!

public int saldo(int nconta){

int result = 0;
if(nconta == num_conta)
result = saldo_i_mes + total_m_creditos - total_itens;
}
return result;

}

Existem oustras maneiras de implementar uma solução para este problema, mas este é um desses! Por exemplo vc poderia dar um exceção caso não exista a conta que vc procura entende, como disse várias formas, essa que passei é a mais simples mas resolve! Eu pessoalmente não faria assim mas pelo menos resolve seu problema!

coloque o retorno fora do IF

Oi,
Nunca use um if sem xaves. (mesmo ele tendo sómente uma linha ou não)…

Tchauzin!

se seu if for false o nao havera um tipo de return por isso… nao pode colocar dentro da instrucao… é recomendado mesmo q seu if tenha apenas 1 instrução vc o coloque entre {}

flw!!

lia , pode-se usar um if sem chaves, quando ele tem apenas um comando no corpo dele. Chaves nesse caso seriam inuteis :wink:

Pode, mas o que ela quiz dizer é que o codigo fica mais bonito. Com as chaves vc vê claramente onde começa e termina o comando.