Problemas em chamar as classes

5 respostas
M
import java.util.Scanner;

public class execBanco{
	   public static void main(String args[]){
	   	      Conta ct1 = new Conta();
	   	      entradaDados ct2 = new  entradaDados();
	   	      Scanner entrada = new Scanner(System.in);
	   	      int opcao=0;
	   	      
	   	    do{
	   	   
	   	    System.out.println("1-Criar conta");
        	System.out.println("2-Depositar");
        	System.out.println("3-Sacar");
        	System.out.println("4-Imprimir estado");
        	System.out.println("5-Sair");
        	System.out.printf("Qual sua opcao: ");
        	opcao=entrada.nextInt();
        	
        	if(opcao==1){
        		ct2.entradaDados();	
        		ct1.imprimirEstado();
        	}
        	if(opcao==2){
        		ct2.depositar();
        		ct1.imprimirEstado();
        	}
        	if(opcao==3){
        		ct2.sacar(52652);
        		ct1.imprimirEstado();
        	}
        	if(opcao==4){
        		ct1.imprimirEstado();
        		ct1.imprimirEstado();
        	}
        	
	   	    }while(opcao<5);
	   	    
	   	    
	   	      	 
	   }
}
import java.util.Scanner;

public class entradaDados{
   private String nomeTitular;
   private int numero;
   private double saldo;
   Scanner entrada = new Scanner(System.in);
   
   
   public void  entradaDados(){
        
           System.out.println("Informe o nome do Titular");
           nomeTitular = entrada.next();
           System.out.println("Informe o numero da Conta");
           numero = entrada.nextInt();
           System.out.println("\n\nConta criada com sucesso!!!");
        
    }
    
    public void sacar(double valor){
           System.out.println("Qual o valor que deseja sacar ?");
           valor=entrada.nextDouble();
           if(saldo>valor){
            saldo-= valor;
            
           }else{
              System.out.println("O saque excede o seu limite");
           }
    }
    
    public void depositar(double valor){
           System.out.println("Qual o valor que deseja despositar ?");
            valor=entrada.nextDouble();
            saldo+=valor;
    }
}
public class Conta{   
      
        private String nomeTitular;   
        private double saldo;   
        private int numero;   
            
        public int getNumero(){   
           return(numero);   
        }   
           
        public void setNumero(int numero){   
           this.numero=numero;   
        }   
           
         public String getNomeTitular(){   //apenas retorna o nome do tituar   
               return nomeTitular ;   
         }   
            
         public void setNomeTitular(){   
            nomeTitular = nomeTitular;   
         }   
            
         public double getSaldo(){   
            return(saldo);   
         }   
          
          
        public void imprimirEstado(){   
                 System.out.printf("Numero.: %d", numero);   
                 System.out.printf("\nNome...: %s", nomeTitular);   
                 System.out.printf("\nSaldo .: R$%.2f\n\n", saldo);   
        }   
}
Meu programa imprime isso:

1-Criar conta
2-Depositar
3-Sacar
4-Imprimir estado
5-Sair

Qual sua opcao: 1
Informe o nome do Titular
Michelato
Informe o numero da Conta
52365

Conta criada com sucesso!!!
Numero.: 0
Nome...: null
Saldo .: R$0,00

porque nao aparece o nome e nem o numero, o que eu fiz de errado, foi a instanciação da classe?

5 Respostas

raphaaugusto

Olá michelato

O problema é que você não está gravando as informações na conta.
Perceba que em nenhum momento você grava os valores que lê no seu objeto conta, os dados ficam apenas no seu EntraDados.

Reveja a modelagem da classe EntraDados, e faça com que os valores que você lê sejam gravados diretamente no seu objeto conta.

algo do tipo: c1.setNomeTitular=entrada.next();

vlw

M
public void  entradaDados(){
        
        	System.out.println("Informe o nome do Titular");
        	ct1.setNomeTitular()= entrada.nextLine();
        	System.out.println("Informe o numero da Conta");
        	numero = entrada.nextInt();
        	System.out.println("\n\nConta criada com sucesso!!!");
        
    }

isso tbm nao deu, como faria isso?

raphaaugusto

ct1.setNomeTitular(entrada.nextLine());

lembre-se sempre que setNomeTitular não é um atributo, mas um método de acesso.
O objetivo deste método é justamente evitar que o atributo seja acessado diretamente (encapsulamento, por isso ele deve ser private), como abaixo:

ct1.nomeTitular=entrada.nextLine(); //errado do ponto de vista da OO

abçs.

M

porque errado?

raphaaugusto

Na realidade não é exatamente errado, mas não recomendado.

Leia um pouco sobre encapsulamento que vc vai entender melhor.
Indico como material a apostila da Caelum, http://www.caelum.com.br/curso/fj-11-java-orientacao-objetos/
Ela explica os princípios da OO de forma bem didática.

abçs.

Criado 22 de outubro de 2009
Ultima resposta 22 de out. de 2009
Respostas 5
Participantes 2