Boa tarde, estou com um pequeno problema na hora de declarar nomes de objetos em JAVA.
É o seguinte, preciso criar um “programa” onde se armazena N contas, e suas informações.
Pra isso coloquei um loop que vai até o usuário decidir que não quer mais abrir contas.
A primeira conta eu crio como ContaBanco c1 = new ContaBanco(); e até aí tudo bem, o problema é que nas próximas repetições do loop eu preciso que este nome mude para c2, c3, c4 etc… Ou seja, ContaBanco c1…(); Conta banco c2…(); de acordo com o estágio do loop. Existe alguma forma de fazer isso? Caso tenha, como eu também automatizaria a parte dos Setters e Getters para que mudem de acordo com o loop? Acredito que seja na mesma lógica.
Então amigo, não é possivel criar variaveis dinamicamente dessa forma, o que você poderia fazer é usar uma variavel, para cada conta que o cliente criasse, vc criar uma nova instancia e armazenava em um array.
1 curtida
Dá para associar cada objeto à uma chave de um mapa:
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class Teste {
private class ContaBanco {
String dono;
String tipo;
double saldo;
@Override
public String toString() {
return String.format( "%s (%s): R$%.2f" , dono, tipo, saldo );
}
}
private void teste() {
// mapa implementado como uma tabela de dispersão
Map<String, ContaBanco> contas = new HashMap<>();
// ou
// mapa implementado como uma tabela de dispersão com order de iteração
// previsível.
//Map<String, ContaBanco> contas = new LinkedHashMap<>();
// ou
// mapa implementando usando uma árvore vermelho-preto.
//Map<String, ContaBanco> contas = new TreeMap<>();
for ( int i = 0; i < 10; i++ ) {
ContaBanco c = new ContaBanco();
c.dono = "Jão " + i;
c.tipo = "CP";
c.saldo = 100 * i;
contas.put( "c" + i, c );
}
System.out.println( "ContaBanco c7: " + contas.get( "c7" ) + "\n" );
for ( Entry e : contas.entrySet() ) {
System.out.println( e.getKey() + ": " );
System.out.println( " " + e.getValue() );
}
}
public static void main( String[] args ) {
new Teste().teste();
}
}
1 curtida
Muito bacana ! Vou estudar um pouco sobre como funciona os Mapas e volto pra tentar resolver. Muito obrigado, salvou demais !