Erro de lógica

5 respostas
D

Galera. Tenho 3 classes pra fazer uma sistema de Banco. Porém tá dando erro na classe Menu, dentro dos switches. Não entendo como pode estar dando erro no objeto "cont", pois quando faço a busca de conta ou crio uma nova conta, esse objeto Conta fica guardado em cont.

Desde já.. grato

import java.util.Scanner;

public class Menu{
public static void main(String args[]){

ContaBancaria cont;

Scanner console=new Scanner(System.in);
Banco JavaBanco=new Banco();


System.out.println("1-Sou Cliente do Banco!");
System.out.println("2-Não sou cliente!");
int com=console.nextInt();

if(com==1){

System.out.println("Digite o numero da sua conta");
String num=console.next();
  cont=JavaBanco.buscaConta(num);
  if(cont==null){
    System.out.println("Conta não encontrada");
    System.exit(0);
    }
}

if (com==2){

System.out.println("Crie a Sua conta");
System.out.println("Digite o numero da sua conta e o saldo inicial");
 String numero=console.next();
 double valor=console.nextDouble();
 cont=JavaBanco.buscaConta(numero);
if(cont!=null){
 System.out.println("Numero de conta ja existente");
 System.exit(0);
 }
else{
JavaBanco.adicionaConta(new ContaBancaria(numero,valor));
System.out.println("Conta Criada com Sucesso");
  }

}

else{
System.out.println("Opção Não encontrada");
System.exit(0);
}



System.out.println("Digite a opção Desejada!");
System.out.println("1-Apagar Conta");
System.out.println("2-Sacar");
System.out.println("3-Depositar");
System.out.println("4-Saldo");
System.out.println("5-Saldo total de contas");
System.out.println("6-Sair");
int op=console.nextInt();

do{
switch(op){
           case 1:
           case 2:{
                System.out.println("Digite o valor a ser sacado");
                double val=console.nextDouble();
                cont.saque(val);
                break;
                }
           case 3:{
                System.out.println("Digite o valor a ser depositado");
                double val=console.nextDouble();
                cont.deposito(val);
                break;
                }
           case 4:
               // falta implementar
           case 5:
              // falta implementar
           case 6:{
              System.exit(0);
              break;
    } 
}
}while(op!=6);
}
}
import java.util.ArrayList;

public class Banco{

ArrayList<ContaBancaria> contas = new ArrayList<ContaBancaria>();

 public void adicionaConta(ContaBancaria a)
 {
  contas.add(a);
 }

 public double getBalanco()
 {
  double total=0;
  for(ContaBancaria a : contas)
  total += total+a.getSaldo();
  return total;
 }
 
public ContaBancaria buscaConta(String n)
  {
   for(ContaBancaria a : contas)
    {
     if(n.equals(a.getNumero()));
     return a;
    }
   return null;
  }


  public void removerConta(String n)
 {
  for(ContaBancaria a : contas)
  if(n.equals(a.getNumero()));
  contas.remove(a);
 }

}
public class ContaBancaria
 {
  private String numero;
  private double saldo;

  public ContaBancaria(String n, double v)
  {
   numero= n;
   saldo = v;
  }

  public void setNumero(String n)
  {
   numero= n;
  }

  public void setSaldo(double s)
  {
   saldo = s;
  }  

  public String getNumero()
  {
   return numero;
  }

  public double getSaldo()
  {
   return saldo;
  }

  public void deposito(double v)
  {
   saldo +=v;
  }

  public void saque (double v)
  {
   saldo-=v;
  }
 }

5 Respostas

igor_felix

Copie a pilha de erros que está aparecendo e cole aqui pra gente ver do que se trata …

vlw

D
H:\programas java\banco>javac Menu.java

Menu.java:67: variable cont might not have been initialized

cont.saque(val);

^

Menu.java:73: variable cont might not have been initialized

cont.deposito(val);

^

.\Banco.java:35: cannot find symbol

symbol  : variable a

location: class Banco

contas.remove(a);

^

3 errors
G

Bom dia.
Faça o seguinte:

Vc deve iniciar a variável da classe Menu, como pede o compilador:

ContaBancaria cont = null;

Vc deve arrumar o seu for na classe Banco, por vc fez um for de única linha, então a variável “a”, não pertence ao escopo do for, faça o seguinte:

public void removerConta(String n) {
	  for(ContaBancaria a : contas){
		  if(n.equals(a.getNumero()));
		  contas.remove(a);
	  }
  }

flw.

D

Valeu ae galera.
Aos que postaram e aos que mesmo não postando, tentaram ajudar.

B

Nos dois primeiros erros, uma das linhas de execução dentro dos ifs não faz nada com cont.

No último, veja os ; a mais do lado dos ifs.

Outro erro, você não está lendo op novamente após o switch, entrará em loop infinito.

Criado 26 de março de 2009
Ultima resposta 26 de mar. de 2009
Respostas 5
Participantes 4