Autor Tema: Crear en java un contador con StringBuilder clase Cuenta de un banco asignar nº  (Leído 4653 veces)

skatersezo

  • Sin experiencia
  • *
  • Mensajes: 13
    • Ver Perfil
Hola, estoy comenzando a programar, y estoy creando una aplicación que gestiona un banco. He creado una clase Cuenta y quiero que para cada objeto que instancie de esa clase, se le asigne un numero de cuenta bancario que tenga esta forma
 "ES00 0000 0000 00 0000000000"

Y que para cada objeto que yo instancie de esa clase, el último valor de esa cadena de caracteres se incremente en 1.

Creo que utilizando metodos de la clase Integer y StringBuilder podria, pero no se como hacer para que en el contador de los últimos 10 digitos que son con los que quiero operar se me respeten los 0 a la izquierda. No sé si me he explicado bien, espero que sí
« Última modificación: 06 de Diciembre 2016, 21:18 por Ogramar »

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Ayuda para crear en java un contador con StringBuilder
« Respuesta #1 en: 29 de Noviembre 2016, 05:13 »
Buenos días.

Accede al siguiente enlace para ver como publicar consultas en el foro:
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Un saludo.

Jobemar

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re:Ayuda para crear en java un contador con StringBuilder
« Respuesta #2 en: 29 de Noviembre 2016, 06:42 »
Deberias trabajar con una BD en la cual registres los numero generados, asi cuando instancies un objeto este consulte la BD y extraiga de alli la numeracion actual y de esa forma le sume uno.

skatersezo

  • Sin experiencia
  • *
  • Mensajes: 13
    • Ver Perfil
Re:Ayuda para crear en java un contador con StringBuilder
« Respuesta #3 en: 29 de Noviembre 2016, 11:26 »
Deberias trabajar con una BD en la cual registres los numero generados, asi cuando instancies un objeto este consulte la BD y extraiga de alli la numeracion actual y de esa forma le sume uno.

Estoy haciendo un grado superior de DAM y aún no hemos visto eso, esto es parte de un ejercicio propuesto para hacer en casa y lo tenemos que hacer sin base de datos por el momento.

skatersezo

  • Sin experiencia
  • *
  • Mensajes: 13
    • Ver Perfil
Re:Ayuda para crear en java un contador con StringBuilder
« Respuesta #4 en: 29 de Noviembre 2016, 11:34 »
Código: [Seleccionar]
public class Cuenta {
/**     DECLARACION VARIABLES DE CLASE **/
private double saldo;
private final String nombre;
private StringBuilder numero_cuenta = new StringBuilder("ES21 0069 0666 01 ");
private static int num_sig=0;

/**   CONSTRUCTORES  **/
public Cuenta (String nombre){
this.nombre=nombre;
saldo=0;
numero_cuenta.append(num_sig);
num_sig++;
}

public Cuenta (String nombre, double saldo){
this.nombre=nombre;
this.saldo=saldo;
numero_cuenta.append(num_sig);
num_sig++;
}

Así lo tengo yo, pero quiero que se respete el número de 0, de manera que para el primer objeto, la secuencia sea de 10 0, "0000000000", para el segundo "0000000001", etc...
« Última modificación: 29 de Noviembre 2016, 11:36 por skatersezo »

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Ayuda para crear en java un contador con StringBuilder
« Respuesta #5 en: 29 de Noviembre 2016, 15:56 »
A ver si te sirve este código:


Código: [Seleccionar]
public class Cliente {
    /**     DECLARACION VARIABLES DE CLASE **/
    private double saldo;
    private String nombre;
    private StringBuilder iban = new StringBuilder("ES21 ");
    private StringBuilder numeroDeCuenta;
    private int numeroDeCliente;
    /**   CONSTRUCTORES  **/
    public Cliente (String nombre,Double saldo){
        this.nombre=nombre;
        this.saldo=saldo;         
    }
    public void setNombre(String nombre){this.nombre=nombre;}
    public void setSaldo(Double saldo){this.saldo=saldo;}
    public void setNumeroDeCuenta(StringBuilder numeroDeCuenta){this.numeroDeCuenta=numeroDeCuenta;}
   public void setNumeroDeCliente(int numeroDeCliente){this.numeroDeCliente=numeroDeCliente;}
    public StringBuilder getNumeroDeCuenta(){return iban.append(numeroDeCuenta);}
    public String getNombre(){return nombre;}
    public Double getSaldo(){return saldo;}
 
  @Override 
    public String toString() {
        return "\nCliente "+numeroDeCliente+"\n"+ "Nombre: "+nombre+"\n"+"IBAN :"+iban+numeroDeCuenta+"\n"+"Saldo: "+saldo ;
    }
}
Código: [Seleccionar]
import java.util.*;

public class Prueba{
    Scanner entradaTeclado = new Scanner(System.in);   
    int ultimosNumeros=0;
    int numeroCliente=1;
    List<Cliente> lp = new ArrayList<Cliente>();
    public static void main(String[] args) {
        Prueba d=new Prueba();
        d.inicio();
    }

    public void inicio(){
        int g=1;
        while (g==1){
            System.out.println("\n1.Añadir cliente :");
            System.out.println("2.Ver clientes :");
            System.out.println("3.Salir :");
            int respuesta = entradaTeclado.nextInt();
            if (respuesta==1){nuevaCuenta();}
            if (respuesta==2){verClientes();}
            if (respuesta==3){g=0;}
        }
    }

    public void nuevaCuenta(){ 

        StringBuilder numeroDeCuenta =new StringBuilder("0000000000");
        String cadena = String.valueOf(ultimosNumeros);             

        System.out.println("Introduce nombre del cliente :");
        String nombre = entradaTeclado.next();       
        System.out.println("Introduce saldo del cliente :");
        Double saldo = entradaTeclado.nextDouble();

        Cliente cliente = new Cliente(nombre,saldo);       
        cliente.setNumeroDeCuenta(numeroDeCuenta.delete(numeroDeCuenta.length()-cadena.length(),numeroDeCuenta.length()).append(ultimosNumeros));
       
        cliente.setNumeroDeCliente(numeroCliente);
        lp.add(cliente);           
        ultimosNumeros++;
        numeroCliente++;
 
    }

    public void verClientes(){
        Cliente temp = null;
        Iterator<Cliente> it = lp.iterator();
        while(it.hasNext())
        {
            temp = it.next();
            System.out.println(temp);           
        }       
    }
}


Jobemar

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re:Ayuda para crear en java un contador con StringBuilder
« Respuesta #6 en: 30 de Noviembre 2016, 01:04 »
Crea un array (de enteros) donde lo modifiques de derecha a izquierda, siempre haciendo comparaciones para validar la numeracion.

skatersezo

  • Sin experiencia
  • *
  • Mensajes: 13
    • Ver Perfil
Re:Ayuda para crear en java un contador con StringBuilder
« Respuesta #7 en: 30 de Noviembre 2016, 13:02 »
Lo primero mil gracias ESOJ, has solucionado mi problema, y además he aprendido cosas nuevas porque lo escribes super limpio y ordenado. Pero te quería preguntas por esta parte:

Código: [Seleccionar]
public void verCuentas(){
        Cliente temp = null;
        Iterator<Cliente> it = misCuentas.iterator();
        while(it.hasNext())
        {
            temp = it.next();
            System.out.println(temp);           
        }       
    }

No entiendo bien que significa la palabra "temp" y porqué la usas, ni lo que hay dentro del bucle while...

Yo para mostrar las cuentas por pantalla, hasta donde sé (llevo apenas un mes programando), habría usado un bucle for recorriendo todo el array.

Tampoco entiendo esta parte del código de la clase cliente:

Código: [Seleccionar]
@Override 
    public String toString() {
        return "\nCliente "+numeroDeCliente+"\n"+ "Nombre: "+nombre+"\n"+"IBAN :"+iban+numeroDeCuenta+"\n"+"Saldo: "+saldo ;
    }
« Última modificación: 06 de Diciembre 2016, 21:17 por Ogramar »

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Ayuda para crear en java un contador con StringBuilder
« Respuesta #8 en: 30 de Noviembre 2016, 13:59 »
Buenas tardes.
Me alegro de haberte sido de ayuda.
Con respecto a tus dudas:

1. temp es una variable de tipo cliente que declaro.Podría llamarse temp o como quisieras.La usaremos para almacenar temporalmente objetos Cliente
2. Con respecto al bucle while,te recomendaría consultar este enlace:
http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=600:interface-iterator-api-java-recorrer-listas-maps-metodo-remove-borrar-objetos-ejemplo-practico-cu00919c&catid=58:curso-lenguaje-programacion-java-nivel-avanzado-i&Itemid=180.
Habla soble la interface Iterator.
3.Con respecto a tu tercera duda,en el código:
Código: [Seleccionar]
@Override 
    public String toString() {
        return "\nCliente "+numeroDeCliente+"\n"+ "Nombre: "+nombre+"\n"+"IBAN :"+iban+numeroDeCuenta+"\n"+"Saldo: "+saldo ;
    }
lo que hago es sobreescribir el método toString() para que cada vez que se imprima un objeto Cliente lo haga de esa manera.
En la línea System.out.println(temp); del while es como si hubiera escrito System.out.println(temp.toString());
Echale un vistazo a este enlace,donde viene esto mejor explicado.
http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=666:sobreescribir-metodos-tostring-y-equals-en-java-ejemplos-y-ejercicios-resueltos-comparar-objetos-cu00694b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Si te queda alguna duda por aquí estamos.
Un saludo.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".