Como instanciar arrays?

Olá pessoal, estou aqui para tirar um dúvida, espero que seja simples ;D

Bom minha dúvida é a seguinte. Preciso instanciar um array e colocar 10 contas nele e depois criar um metodo que procura pelo numero da conta que foi passado como parametro. E também imprimir na tela o numero da conta!

Acho que isso seria bem básico, mas comecei em JAVA a pouco tempo e nunca tinha programado nada.

Sinceramente não quero que resolvam pra mim, se possível o conceito da solução.

Abaixo vai o código da classe conta que é onde está os parametros e atributos da mesma:

public class Conta {

	private String numero;
	private double saldo;
	private Cliente cliente;

	public Conta(String numero, double saldo, Cliente cliente) {
		this.numero = numero;
		this.saldo = saldo;
		this.cliente = cliente;
	}
	
	public void creditar(double valor) {
		this.saldo = this.saldo + valor;
	}
	
	public void debitar(double valor) {
		if (valor <= this.saldo) {
			this.saldo = this.saldo - valor;
		}
	}
	
	public void transferir(Conta destino, double valor) {
		this.debitar(valor);
		destino.creditar(valor);
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public double getSaldo() {
		return saldo;
	}

	public void setSaldo(double saldo) {
		this.saldo = saldo;
	}
	
	public Cliente getCliente() {
		return cliente;
	}
	
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
}

Abaixo vai o código da classe Teste que é onde esta o metodo main:


public class Teste {
		
	public static void imprimir(Conta[] contas) {

		int length = contas.length;
		System.out.println("**** TRANSAÇÃO ****");
		for (int i = 0; i < length; i++) {
			Conta conta = contas[i];
			String numero = conta.getNumero();
			double saldo = conta.getSaldo();
			String nomeCliente = conta.getCliente().getNome();
			System.out.println("---------------");
			System.out.println("Conta: " + numero);
			System.out.println("Saldo: " + saldo);
			System.out.println("Cliente: " + nomeCliente);
		}
		System.out.println("*******************");
		
		
	}

	public static void main(String[] args) {
		
		Cliente cliente = new Cliente("123456", "Igor");
		Conta conta1 = new Conta("123-0", 0, cliente);
		Conta conta2 = new Conta("123-1", 0, cliente);
	
		Cliente cliente2 = new Cliente("987654", "Flávio");
		Conta conta3 = new Conta("123-2", 0, cliente2);
		
		imprimir(conta1, conta2, conta3);
		conta1.debitar(20);
		imprimir(conta1, conta2, conta3);
		conta2.creditar(40);
		imprimir(conta1, conta2, conta3);
		conta2.transferir(conta3, 20);
		imprimir(conta1, conta2, conta3);





			public static Conta procurar(Conta[] contas,           
					String numero) {
			System.out.println("A conta achada é:" + numero);   //I sso aqui ta certo?
		
	}
      }
}
		

Obrigado!

Eu não consegui achar o array de contas.
Pra criar um array “genérico”, você faz assim:

Contas[] listaDeContas = new Contas[quantidadeDigitada];

Daí vai inserindo da seguinte forma:

Conta c1 = new Conta(); listaDeContas[0] = c1;
Ou seja, coloquei a nova conta na primeira posição (e assim vai indo).

Pra procurar, você está simplesmente imprimindo o número. Você deve buscar a conta no array. Por exemplo, supondo que foi digitado o número de conta 12 pra ser buscado. Você faz um for no array e compara cada número de conta com o entrado. Quando encontrar, imprime e sai dor for. Você está fazendo a assinatura certo do método de procura (passando o array e o número da conta (ou o índice do array)), só falta arrumar lá dentro.

Mas tipo, quando eu coloco

Contas[] listaDeContas = new Contas[10];

ele diz que Contas não pode ser resolvido para um tipo…

E o metodo procurar eu tenho que criar um metodo getConta pra saber a String numero?

É Conta[] lista… Me desculpe, escrevi errado no primeiro post.

Sobre o método de procurar, depende. Você pode buscar por Cliente, por exemplo. Se o número da conta fica na classe Cliente, você pode fazer o for assim:

for (int contadorDeContas = 0; contadorDeContas < listaDeContas.length; contadorDeContas++) { if (listaDeContas[0].getCliente().getNumeroDaConta() == numeroDaContaPassadoPorParametro) { return listaDeContas[0]; } }

Aliás, se o número da conta for String, ficaria

if (listaDeContas[0].getCliente().getNumeroDaConta().equals(numeroDaContaPassadoPorParametro))

Opa André,

Eu realmente não sei como faço pra meu metodo procurar por alguma conta que eu defina como parametro.

Tou meio embolado com esse metodo procurar agora :confused:

:?:

Você faz assim:

[code]

public Conta procurarConta(Conta[] contas, int numeroDaConta) {
//Percorre-se a lista de contas, como você fez para imprimir
for (int i = 0; i < contas.length; ++i) {
//Compara o número da conta atual com o desejado
if (contas[i].getNumero() == numeroDaConta) {
return contas[i]; //Se são iguais, retorna a conta encontrada
}
}
return null; //Se nenhum for igual, não existe a conta, retorna null.
}[/code]

Uma alternativa:

Ao invés de

for (int i = 0; i < length; i++) { Conta conta = contas[i]; //Faz qualquer coisa com a conta, por exemplo System.out.println(conta); }

Use:

for (Conta conta : contas) { //Faz qualquer coisa com a conta System.out.println(conta); }

Opa Vinicius,

fiz isso que você falou e vou escrever os erros que deram!


public Conta procurarConta(Conta[] contas, int numeroDaConta) {
// Modificador ilegal para procurarConta, só final é permitido
Contas[] contas,
// Syntax error on token "," , ; expected
if (contas[i].getNumero() == numeroDaConta) {
// Tipo de operando incompativel de String com INT
return contas[i];
// void methods não tem valor de retorno - esse foi o mais bizarro, não entendi porque ele disse isso.

Acho que você não entendeu muito bem.

Faz um método static, fora da main.

public static Conta procurarContaPorNumero(Conta[] contas, int numeroDaConta) {
     // Aqui, voce faz o for e compara com o numero da conta. Se for igual, retorna ela.
    for (Conta contaAtual : contas) {
       // Compara o numero de contaAtual com o numeroDaConta. Se for igual, retorna contaAtual.
    }
}
public static void main(String[] args) {
}

Valeu André!

Consegui fazer retornar!

…penso que um conjunto de Contas poderia ser um Banco, assim…sua classe Banco seria responsável por guardar seus objetos Contas…

desta forma o método localizarConta(), seria implementado nela (Banco)…

Banco ainda poderia receber outros tipos de Contas…(Corrente, Poupança, etc). Somente uma sugestão. :wink:

[]'s