Chamada de método?

5 respostas
S

Olá Pessoal,

Estou com problemas nesta aplicação será que alguém pode me ajudar?

Primeiro ? como faço a chamada do método imprimeBanco, já que da forma que estou fazendo aparece a seguinte mensagem: SacaEDeposita.java:63: ?void? type not allowed here System.out.println(minhaConta.imprimeBanco());
^
Segundo ? como faço a soma das variaveis saldo e limite, pois o método livreParaMovimentacao do jeito que está só me retorna 0.0, já tentei declarar uma variável no método e atribuir os valores nela mas não deu certo .

Terceiro ? Porque o método pegaTipoConta da o seguinte erro:
SacaEDeposita.java:44: missing return startement }
^

class Conta
  {
    int numero;
    String titular;
    double saldo;
    double limite;
    double totalDisponivel;

   void imprimeBanco()
      {
       System.out.println("Esta conta e do Banco do Brasil ");
      }

   void saca(double quantidade)
      {
       double novoSaldo = this.saldo - quantidade;
       this.saldo = novoSaldo;
      }

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

   void livreParaMovimentacao()
      {
        this.totalDisponivel = this.saldo + this.limite ;
      }

   String pegaTipoDaConta()
      {
       if (this.limite > 1000 && this.limite <= 10000)
          {
           return "Conta Especial";
       	  }
       if (this.limite > 10000)
          {
           return "Conta do dono do banco";
          }
       if (this.limite < 1000)
          {
           return "Conta Simples";
          }
      }
  }

class SacaEDeposita
   {
    public static void main(String args[])
       {
       	Conta minhaConta;
        minhaConta = new Conta ();

        minhaConta.numero = 123456;
        minhaConta.titular = "Joao da Silva ";
        minhaConta.saldo = 1000;
        minhaConta.limite = 3200;

        minhaConta.saca (200);

        minhaConta.deposita(500);

        System.out.println(minhaConta.imprimeBanco());
        System.out.println(minhaConta.titular + " - c/c " + minhaConta.numero);
        System.out.println(minhaConta.pegaTipoDaConta());
        System.out.println(minhaConta.saldo);
        System.out.println(minhaConta.limite);
        System.out.println(minhaConta.totalDisponivel);
       }
   }

5 Respostas

J

A Mensagem “void type is not allowed here”, neste caso, significa que você está tentando imprimir um conteúdo vazio, ou seja, o método imprimeBanco é do tipo void. Experimente mudar o método imprimeBanco para:

public String imprimeBanco(){

return Banco do Brasil;

}

OU, (SE VOCÊ PREFERIR) pode mudar só a chamanda do método; ao invés de:
System.out.println( imprimeBanco() );
você pode colocar só:

imprimeBanco();

Tanto faz…
Eu optaria pela primeira opção;

A mensagem do método pegaTipoDaConta() significa que não há um retorno padrão, ou seja, caso nenhum do ifs forem atendidos o método não tem o que retornar. Experimente botar um “return null” abaixo do corpo do último IF:

if( this.limite < 1000 ){

return Conta simples;

}

return null;

// ou:
// return “Tipo desconhecido”;

Quanto à soma dos valores tente o seguinte:

public void livreParaMovimentacao(){

double total = saldo + limite;

}

Espero ter ajudado
};

F

Vi rapidinho aqui!!

1-vc não pode “usar” metodos não estáticos dentro de estaticos, ou variaveis ou clasesses nesta forma

2- he como vc viu se o programa não rodou…deu erro antes, vc conceguiu executar a classe???

3-Vc deve colocar um return no fim metodo, porque se não for nenhuma dos ifs, vc não retornará nada…adicine no fim do metodo

return “Nenhuma das opções”;

J
O pegaTipoDaConta() você pode fazer assim também:
String pegaTipoDaConta() 
      { 
       String tipoConta;
       if (this.limite > 1000 && this.limite <= 10000) 
          { 
           tipoConta = "Conta Especial"; 
           } 
       if (this.limite > 10000) 
          { 
           tipoConta = "Conta do dono do banco"; 
          } 
       if (this.limite < 1000) 
          { 
           tipoConta = "Conta Simples"; 
          }
       return tipoConta;
      }

Detalhes:
- você esqueceu de tratar limite = 1000
- use else if ao invés de só if
- se o if só tem uma linha de execução não precisa das chaves

Eu faria:

String pegaTipoDaConta() 
  { 
   String tipoConta; 

   if (this.limite > 1000 && this.limite <= 10000) 
      tipoConta = "Conta Especial"; 
   else if (this.limite > 10000) 
      tipoConta = "Conta do dono do banco"; 
   else 
      tipoConta = "Conta Simples"; 

   return tipoConta; 
  }
S

Olá Pessoal,

Valeu mesmo ajudou pra caramba eu consegui rodar tudo.

???
Não tem jeito de utilizar o método livreParaMovimentação sem Ter que usar o System.out.println dentro do método. Eu gostaria de armazenar isso numa variável global da classe para que toda vez que eu alterasse o limite e/ou o saldo essa variável fosse atualizada? Tentei mas não consegui.
Eu gostaria de entender bem a chamada do método void pois só consegui chama-lo quando passei algum parâmetro ou quando usei o System.out.println.

Joãomassan

Bom eu estou seguindo uma apostila que tirei da net, e gostaria de saber algumas coisas com relação a sua resposta:
Porque vc prefere utilizar o método imprimeBanco como método função, há alguma diferença que valha pena ressaltar?

FelipeSS_2

Com relação a sua pergunta eu tirei os métodos que estavam dando erro no classe e rodei, blz?

JavaDrops

O tratamento do limite é o próximo passo do curso.

J

“Sandroperi”:
Olá Pessoal,

Valeu mesmo ajudou pra caramba eu consegui rodar tudo.

???
Não tem jeito de utilizar o método livreParaMovimentação sem Ter que usar o System.out.println dentro do método. Eu gostaria de armazenar isso numa variável global da classe para que toda vez que eu alterasse o limite e/ou o saldo essa variável fosse atualizada? Tentei mas não consegui.
Eu gostaria de entender bem a chamada do método void pois só consegui chama-lo quando passei algum parâmetro ou quando usei o System.out.println.


Não entendi muito bem o que você quer.

“Sandroperi”:
JavaDrops
O tratamento do limite é o próximo passo do curso.

Acho que você não entendeu o que eu falei :oops:
Nos seus if você previu a situação os casos em que o limite é menor que 1.000, entre 1.000 e 10.000 (inclusive) e para limites acima de 10.000, mas esqueceu do limite igual a 1.000.

Criado 30 de junho de 2005
Ultima resposta 4 de jul. de 2005
Respostas 5
Participantes 4