Acessar atributo com ArrayList - RESOLVIDO

6 respostas
F

Olá,

usando um array, posso tranquilamente modificar/acessar um determinado atributo de outra classe:

usando uma classe de nome Conta:

Conta[] conta = new Conta[];

conta[0].setNome(Teste);

conta[0].getNome();

mas não consegui com ArrayLlist:

List list_conta = new ArrayLlist();

tentei de várias formas, como essa, mas, não consegui:
lista_conta.add(conta.setNome(“Teste”));

é possível?

Obrigado

6 Respostas

franciscossouza

fajo:
tentei de várias formas, como essa, mas, não consegui:
lista_conta.add(conta.setNome(“Teste”));

é possível?

Não, não é possível (: a operação conta.setNome(“Teste”); não retorna um objeto do tipo Conta, que é o que o método add espera receber.

Você deve fazer:

conta.setNome("Teste"); lista_conta.add(conta);
:wink:

Roger75

Tente assim:

Conta c=(Conta)lista_conta.get(0)
nome=c.getNome();

renamed

Roger75:
Tente assim:

Conta c=(Conta)lista_conta.get(0)
nome=c.getNome();

Perfeito, mas o cast não é necessário.

lina

Oi,

Ou então retire a referencia da na criação do seu Array.

List list_conta = new ArrayLlist(); lista_conta.add(conta.setNome("Teste"));

Tchauzin!

F

Obrigado a todos e desculpem minhas limitações com a linguagem, mas, não consegui fazer o q quero:

Possuo 2 classe, um PrincipalConta e outra Conta, com os seguintes códigos:

public class PrincipalConta {

    static List lista_conta = new ArrayList();
    static Conta conta = new Conta();
    static int cont = 0;

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int escolha;

        do {
            System.out.println("Escolha a opção:\n1 - Cadastrar Conta\n2 - Saque\n3 - Depósito\n4 - Finaliza");
            escolha = sc.nextInt();

            switch (escolha) {
                case 1:
                    cadastrar();
                    break;
                case 2:
                    sacar();
                    break;
                case 3:
                    depositar();
                    break;
                default:
                    System.out.println("Operação não Existe!");
            }
        } while (escolha != 4);

    }

    public static void cadastrar() {

        Scanner sc = new Scanner(System.in);
        System.out.println("Digite o nome do usuário:");
        conta.setCliente(sc.next());
        System.out.println("Digite o nº da conta:");
        conta.setNconta(sc.nextInt());
        lista_conta.add(conta);
    }

    public static void sacar() {
        Scanner sc = new Scanner(System.in);
        System.out.println("Digite o nº da sua conta:");
        boolean enc = false;
        int nconta = sc.nextInt();

        for (int i = 0; i < cont; i++) {
            if (lista_conta.contains(nconta)) {
                System.out.println("Conta Encontrada!\n\nDigite o valor do saque");
                double s = sc.nextDouble();
                conta.saque(s);
                enc = true;
                break;
            }
        }
        if (!enc) {
            System.out.println("Conta não encontrada!");
        }
    }

    public static void depositar() {
        Scanner sc = new Scanner(System.in);
        System.out.println("Digite o nº da sua conta:");
        boolean enc = false;
        int nconta = sc.nextInt();

        for (int i = 0; i < cont; i++) {
            if (lista_conta.contains(nconta)) {
                System.out.println("Conta Encontrada!\n\nDigite o valor do depósito");
                double s = sc.nextDouble();
                conta.deposita(s);
                enc = true;
                break;
            }
        }
        if (!enc) {
            System.out.println("Conta não encontrada!");
        }
    }
}
public class Conta {

    private String cliente;
    private int nconta;
    private double saldo = 100;

    public String getCliente() {
        return cliente;
    }

    public void setCliente(String cliente) {
        this.cliente = cliente;
    }

    public int getNconta() {
        return nconta;
    }

    public void setNconta(int nconta) {
        this.nconta = nconta;
    }

    public double getSaldo() {
        return saldo;
    }

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

    public void deposita(double valor){
        saldo += valor;
        imprime();

    }

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

    public void transfere(Conta conta,double valor){
        this.saldo -= valor;
        conta.saldo += valor;
    }

    public void imprime(){
        System.out.println("Seu saldo atual é: "+saldo);
    }
}

e lina quando coloco o seu codigo não consigo nem compilar, acusa: 'void' type not allowed here

lina

Oi,

Da maneira que está fazendo, você tem 1 arraylista e dentro dele você tem 1 objeto Conta.

lista_conta
----> Conta
--------> Métodos

A forma correta de fazer nesse caso é (Receber o objeto Conta e compara-lo):

public static void sacar() {
	        Scanner sc = new Scanner(System.in);
	        System.out.println("Digite o nº da sua conta:");
	        boolean enc = false;
	        int nconta = sc.nextInt();

	        for (int i = 0; i < lista_conta.size(); i++) {
	        	Conta
	        	lo_conta = (Conta)lista_conta.get(i);
	            if (lo_conta.getNconta() == nconta) {
	                System.out.println("Conta Encontrada!\n\nDigite o valor do saque");
	                double s = sc.nextDouble();
	                conta.saque(s);
	                enc = true;
	                break;
	            }
	        }
	        if (!enc) {
	            System.out.println("Conta não encontrada!");
	        }
	    }

Obs: Você não está incrementando a variavel int cont nunca! ou seja, sempre será 0 e nunca irá entrar no FOR.
Ou você incrementa ela em cada conta cadastrada (método cadastrar()) ou utiliza o tamanho de seu array conta para isto.

Tchauzin!

Criado 28 de outubro de 2009
Ultima resposta 29 de out. de 2009
Respostas 6
Participantes 5