[RESOLVIDO]Dúvida nesse código sobre return

porque esse código não funciona?


public class Conta {
 double valor;
 double saldo;

 boolean saca(double valor) {
 if (this.saldo < valor) {
 return false;
}
else {
 this.saldo = this.saldo - valor;
 return true;
}
}
}

Olá Fabio, como está?

Mas o que está acontecendo, algum erro de compilação?

Se for manda a mensagem para agente entender.

Aepnas um detalhe, tente identar o código para que agente possamos enteder mais facilmente

Abraço

cara, eou vou chutar… mas eu acho que está faltando um método main pra ele funcionar…

Se o método main existir em alguma outra classe, vocês está criando um Objeto Conta e chamando esse método ???

Se Sim, diga aí exatamente o que não está funcionando.

Abs []

o objetivo desse código é mostrar se pode sacar ou não , mas mesmo colocando o public main não funciona , tentei dessa maneira e ocorre erro

public class Conta {
public static void main(String[] args) {
 double valor;
 double saldo;
 saldo = 200;
 valor = 100;

 boolean saca(double valor) {
 if (this.saldo < valor) {
 return false;
}
else {
 this.saldo = this.saldo - valor;
 return true;
}
}
}
}

O que o Adriano falou, pode ser também.

é muito Importante você ver que a tua classe Conta, simplesmente não vai rodar na sua implementação de JVM, a sua classe Conta apenas define o que as contas criadas no teu sistema devem ter (como o saldo por exemplo) e o que elas devem fazer (como o saca por exemplo), agora fazer um programa java rodar dentro da JVM SEMPRE temos que ter uma classe que terá uma main, na main que a JVM começa a executar os seus programas java, então você deve criar uma classe aonde vai ficar a sua main
E é uma ótima prática, que a main não esteja dentro das classes que definem como as coisas importantes do seu sistema deve ser, como a classe Conta.

Abraço

Fábio, você precisa voltar a estudar o básico de Java cara.

main é um método e saca é outro método, da forma que você fez, saca está dentro de main.

Segue também a dica do nosso amigo e identa teu código, é complicado ler código onde a linha começa colada na tela.

Abs []

[quote=Super Fabio]o objetivo desse código é mostrar se pode sacar ou não , mas mesmo colocando o public main não funciona , tentei dessa maneira e ocorre erro

[code]
public class Conta {
public static void main(String[] args) {
double valor;
double saldo;
saldo = 200;
valor = 100;

boolean saca(double valor) {
if (this.saldo < valor) {
return false;
}
else {
this.saldo = this.saldo - valor;
return true;
}
}
}
}
[/code][/quote]

Como eu disse no post anterior, para não te causar confusão coloca a main em uma outra classe.

Fabio desculpe por falar assim não sei seu nível de conhecimento em programação, indentar o código é como o exemplo abaixo. (nós agradecemos :lol: )

[code]public class Conta {
public static void main(String[] args) {
double valor;
double saldo;
saldo = 200;
valor = 100;

	boolean saca(double valor) {   
		if (this.saldo &lt; valor) {   
			return false;   
		}   
		else {   
			this.saldo = this.saldo - valor;   
			return true;   
		}   
	}   
}   

} [/code]

bem que puderia desse jeito dar certo Frantic mas deu erro , o que eu intendi é que eu tenho que criar uma classe num outro bloco e usar o new , mas isso pelo que vi na apostila da Caelum na página 46(Métodos com retorno) isso não será necessário, onde ele pede para colocar os atributos abaixo da classe Conta , está desse jeito na apostila

class Conta {
 // ... outros metodos e atributos ...

 boolean saca(double valor) {
 if (this.saldo < valor) {
 return false;
}
else {
this.saldo = this.saldo - valor;
return true;
}
}
}

Fábio não falei que a indentação “corrigiria” seu código apenas que torna ele mais fácil de ser lido.
Primeiramente tira um método de dentro do outro e passe como parâmetros as duas variáveis e não somente a variável valor, aí chame o método saca e veja se dá certo.

E ai Super Fabio, conseguiu fazer funcionar cara?

Acredito ser “this” dentro do IF

Eu tentaria isso

public class Conta {  
public static void main(String[] args) {   
double saldo = 200;  
double valor = 100;  
boolean saca;
   
if (saldo < valor) {  
           return false;  
        }  
         else {   
               return true;  
          }  
      }  
}  

Vamos lá Super Fábio, vou fazer algo totalmente contrarecomendado, mas vou passar a resposta aqui, ela começa mais ou menos assim:

A sua classe Conta, basicamente ela apenas define o que COMO deve ser, uma conta deve TER (atributos), como saldo, agencia, numero…, e o uma conta deve FAZER (métodos), tais como saca, consultaSaldo, transfere, deposita…
Então podemos colocar a sua conta aqui, do jeito que você postou primeiro:

[code]
// Salva ai em um arquivo Conta.java, acostumem-se assim
class Conta {
int numero;
double saldo;

boolean saca(double valor) {  
    if (this.saldo < valor) {  
        return false;  
    }  
    else {  
        this.saldo = this.saldo - valor;  
        return true;  
    }  
}  

void deposita(double valor) {
    this.saldo = this.saldo + valor;
}

}[/code]

Ok, com esta classe Conta, eu sei qual é o saldo dessa conta por exemplo? Eu sei qual é o numero? Não temos a definição dessas coisas ainda! Aonde fazemos nosso programa rodar é na main, vamos criar então um programa java, para criar um programa java, precisamos de uma main. Mas percebe que vou criar a main em uma outra classe, para não misturar o que é execução do programa, do que é a definição da conta:

[code]
// Salve este arquivo no mesmo diretório que o anterior, e com o nome Programa.java, como boa prática, coloque o mesmo nome da classe com o nome do arquivo
// em algum momento nos seus estudos, vai chegar uma situação que você vai ser obrigado a fazer isto.
class Programa {
public static void main(String args[]) {
// Aqui vc coloca a execução do seu programa
// Cria uma nova conta
Conta contaDoFabio = new Conta();
//chamada de método deposita, para depositar 100 reais na conta do Fabio
contaDoFabio.deposita(100);

    //chamada de método para sacar 10 reais
    boolean conseguiuSacar = contaDoFabio.saca(10);

    if(conseguiuSacar) {
        System.out.println("Sacou!!!!");
    }
    else {
        System.out.println("Ops!!! Saldo insuficiente!");
    }
}

}[/code]

Perceba o seguinte, não falei que o sado estava dentro da main, apenas depositei e o saldo vai ser alterado, mesma coisa para o médo saca.

Com isso você começa a escrever seus primeiros programas java, Orientado a objetos.

Apenas para constar, isso aqui não vai resolver muitas duvidas que você tem ainda, ainda tem muito detalhe que foi simplesmente jogado aqui, então continue estudando!

Abraço

ótima resposta narciso , tem que saber usar bem esses { } , obrigado pela compreensão