Eu usei o comando return mas não porque esta dando erro!

9 respostas
E

[color=green]Aqui esta a primeira classe[size=18] [/size][/color]

package Contas;

public class Conta {

//Atributos

int numero;

String dono;

double saldo;

double limite;
boolean ativar1 = false;
boolean ativar2 = true;

//Métodos

public String Sacar(double quantidade1){ [color=red] //Esta dando erro aqui. O erro é assim: “missing return statement”[size=12] [/size][size=18] [/size][/color]

if(this.ativar1){
    
        if(quantidade1 <= this.saldo && quantidade1 > 0){
            double novoSaldo1 = this.saldo - quantidade1;
            this.saldo = novoSaldo1;
            return "O Saldo agora é: " + this.saldo;
        }
        
        else {
            return "Valor Inválido";
        }
    }
}

public String Depositar(double quantidade2){  [color=red] [b] //Esta dando erro aqui. O erro é assim: "missing return statement"[/b][size=12] [/size][size=18] [/size][/color]
    if(this.ativar2){
        if(this.saldo + quantidade2 > this.limite){
            return "Valor Inválido";
        }
        else if(quantidade2 <= 0){
            return "Valor Inválido";
        }
        else{
            double novoSaldo2 = this.saldo + quantidade2;
            this.saldo = novoSaldo2;
            return "O Saldo Agora é: " + this.saldo;
        }
    }
}

}

Aqui está a segunda classe

package Contas;

public class Teste {

public static void main(String[] args){

Conta minhaconta;

minhaconta = new Conta();
minhaconta.dono = "Edgar";
    minhaconta.saldo = 800;
    minhaconta.limite = 1000;
    minhaconta.numero = 123456;
    
    minhaconta.ativar1 = true;
    minhaconta.Sacar(0);
    minhaconta.ativar2 = false;
    minhaconta.Depositar(200);
}

}

Me Ajudem por favorrrrrrrrrr[color=blue] [/color]

9 Respostas

ViniciusLM

O problema esta que voce esta colocando todos os return dentro de if e nesse caso nao existe um para a propria classe.

E

Vlw cara tirou minha dúvida!!! Obrigado :stuck_out_tongue:

ViniciusLM

Eu estava em um atendimento de help desk dai nao deu pra ajudar muito rsrsrrs…
Mas aconselho usar variavel ao invez de retornar o valor propriamente dito, por exemplo:

String resultado = “”;

if(quantidade1 <= this.saldo && quantidade1 > 0){

double novoSaldo1 = this.saldo - quantidade1;

this.saldo = novoSaldo1;

resultado = "O Saldo agora é: " + this.saldo;

} else {

resultado = “Valor Inválido”;

}

// Dai la no final onde eu coloquei que faltava aquele return vc usa assim.
return resultado;

Desse jeito voce tem apenas um return na classe que te da maior flexibilidade na hora de programar :wink:

bruno_7317

Pense no seu método da seguinte forma:

if (condição) {
    if(outracondição){
        //Bloco de código
        return x;
    } else {
        return y;
    }
}

Ou seja, ele só vai retornar alguma coisa se passar no primeiro if, do contrário não retorna nada, daí o “missing return statement”.
Pra resolver isso, tente colocar um return fora do if ou dentro de um else:

if (condição) {
    if(outracondição){
        //Bloco de código
        return x;
    } else {
        return y;
    }
} else {
    return z;
}
montanha007

cara não sei se estou fazendo errado mais da uma olhada

package LogicadeProgramacao;

public class Conta {
	//Atributos
	int numero;
	String dono;
	double saldo;
	double limite;

	boolean ativar1 = false;
	boolean ativar2 = true;

	//Métodos
	public String Sacar(double quantidade1){ //Esta dando erro aqui. O erro é assim: "missing return statement"
		if(this.ativar1){
			if(quantidade1 <= this.saldo && quantidade1 > 0){
				double novoSaldo1 = this.saldo - quantidade1;
				this.saldo = novoSaldo1;
				return "O Saldo agora é: " + this.saldo;
				}
			else {
				return "Valor Inválido";
				}
			}
		return null; //Adiciona algum retorno aqui
		}

	public String Depositar(double quantidade2){ //Esta dando erro aqui. O erro é assim: "missing return statement"
	
		if(this.ativar2){
			if(this.saldo + quantidade2 > this.limite){
				return "Valor Inválido";
				}
			else if(quantidade2 <= 0){
				return "Valor Inválido";
				}
			else{
				double novoSaldo2 = this.saldo + quantidade2;
				this.saldo = novoSaldo2;
				return "O Saldo Agora é: " + this.saldo;
				}
			}
		return null;//Adiciona algum retorno aqui
		}
	}
henriqueluz

Como o amigo de cima citou nos posts anteriores:
O seu return está dentro de um bloco “if”, e se o bloco não for satisfeito o método não retornará nada.
Coloque algum return fora do bloco e tudo se resolve.

Abs,

R

Boa tarde montanha007,

Eu percebi que dava pra simplificar um pouco seu código e deixa-lo mais legivel, da uma olhada:

public class Conta {

	private double saldo;
	
	//testando o método depositar e sacar !
	public static void main(String[] args) {
		Conta c = new Conta();
		System.out.println(c.depositar(20.00));
		System.out.println(c.sacar(5.00));
	}
  
	public String sacar(double valor) {
		if ((valor > 0) && (valor <= getSaldo())) {
			setSaldo(getSaldo() - valor);
			return "O Saldo agora é: " + getSaldo();
		} else {
			return "Valor Inválido";
		}
	}
	
	public String depositar(double valor) {
		if (valor <= 0) {
			return "Valor Inválido";
		} else {
			setSaldo(getSaldo() + valor);
			return "O Saldo Agora é: " + getSaldo();
		}
	}
	
	public double getSaldo() {
		return saldo;
	}

	public void setSaldo(double saldo) {
		this.saldo = saldo;
	}

}

Espero ter ajudado!

Abraço!

WellingtonRamos

riqueluz:
Como o amigo de cima citou nos posts anteriores:
O seu return está dentro de um bloco “if”, e se o bloco não for satisfeito o método não retornará nada.
Coloque algum return fora do bloco e tudo se resolve.

Abs,

Ou então, crie um else para o if principal.

//Não funciona pois, se não entrar no if, não há retorno public Object testReturn() { if(condicao()) { return; } } //Funciona pois, se não entrar no if, entrará no else e no else há retorno também public Object testReturn() { if(condicao()) { return returnSomething(); } else { return returnOtherThing(); } }
Essas regras valem para ifs encadeados. A melhor solução para isso é criar uma variável de escopo local (método). Receberá o valor dentro dos ifs e, ao final, será retornado. Aliás, essa solução já foi, inclusive exemplificada acima.

Meth

O compilador precisa ter certeza que o retorno é garantido…
Quando voce usa um if pode ser que a condicao falhe e nao tenha retorno…
Se voce colocar um else após o if externo seu codigo funciona…

if(condicao){ //<-------Se a condicao desse if falhar eu irei retornar o que? if(outraCondicao){return x;} else{return y;} } else{return z;}//<----.Se a condicao do if falhar terei uma alternativa

Criado 28 de julho de 2011
Ultima resposta 30 de jul. de 2011
Respostas 9
Participantes 8