Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: skatersezo en 29 de Noviembre 2016, 02:53

Título: Crear en java un contador con StringBuilder clase Cuenta de un banco asignar nº
Publicado por: skatersezo en 29 de Noviembre 2016, 02:53
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í
Título: Re:Ayuda para crear en java un contador con StringBuilder
Publicado por: ESOJ 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 (https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0)

Un saludo.
Título: Re:Ayuda para crear en java un contador con StringBuilder
Publicado por: Jobemar 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.
Título: Re:Ayuda para crear en java un contador con StringBuilder
Publicado por: skatersezo 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.
Título: Re:Ayuda para crear en java un contador con StringBuilder
Publicado por: skatersezo 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...
Título: Re:Ayuda para crear en java un contador con StringBuilder
Publicado por: ESOJ 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);           
        }       
    }
}

Título: Re:Ayuda para crear en java un contador con StringBuilder
Publicado por: Jobemar 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.
Título: Re:Ayuda para crear en java un contador con StringBuilder
Publicado por: skatersezo 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 ;
    }
Título: Re:Ayuda para crear en java un contador con StringBuilder
Publicado por: ESOJ 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 (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 (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.