validar numero cuenta bancaria en java

Iniciado por valera22, 1 Enero 2013, 23:26 PM

0 Miembros y 1 Visitante están viendo este tema.

valera22

Muy buenas ;

estoy intentando hacer un programa donde al ingresar un numero de cuenta (los 20 digitos) me valide si es valido el digito de control o no.

import java.io.*;
import java.util.Scanner;
       
  public class PRO05_Ejer1 {    
     
     
   public static void main(String[] args)throws IOException, Exception {
       /** parametros*/
     
   String nombre,cuenta;
   
 
   
    /**  objeto de la clase escanner */    
   Scanner teclado= new Scanner(System.in);
     
   /** introducir los datos que se solicita      */
   System.out.println("introduzca el nombre : ");
   nombre = teclado.nextLine();
   
   
   System.out.println("Introduzca su número de cuenta: ");
   cuenta = teclado.nextLine();

( aqui es donde deberia de poner el codigo para validar pero no se como hacerlo!!

Gracias.
   

sapito169

no se que es un dijito de control de una cuenta ni tampoco se como se come puedes explicar mas



valera22

lo que tengo que hacer es un programa que valide un numero de cuenta bancaria, que se componen de 20 numeros, los 4 primeros son el codigo de la entidad, 4 del codigo de la oficina, 2 de digito de control y los 10 restantes el numero de cuenta real.

lo que necesito es que cuando ingrese un numero de 20 digitos ( xxxx xxxx xx xxxxxxxxxx) me diga si es correcto o no, el digito de control normalmente se valida segun el codigo del bando codigo de sucursal y el numero de cuenta pero no se como realizar esta formula matematica.

saludos.


legnacaido

A lo mejor es un poco tarde.
Yo tengo que hacer el mismo programa pero mi duda es otra.

Bueno intentaré explicar lo de los dígitos de control
Una cuenta se compone:
EEEE OOOO DD NNNNNNNNNN
E- entidad
o- oficina
d- dígitos de control
n - número de la cuenta

PARA CALCULAR EL PRIMER DÍGITO DE CONTROL
tienes que añadir dos ceros al principio y coger los número de entidad y oficina, de tal modo que te quede un número de 10 dígitos.
A continuación tienes que multiplicar cada dígito que te dio anteriormente ( es decir, 00 eeee oooo) por los siguientes números según el orden: 1, 2, 4, 8, 5, 10, 9, 7, 3, 6
El resultado de cada multiplicación tiene que sumarlo (es decir hacer un sumatorio)
Ese resultado debes dividirlo entre 11
El resto de esta división es el dígito de control // excepto en los siguientes casos:

Si el resto es 10 -- el dígito que se tomará es 1
Si el resto es 11 -- el dígito que se tomará es 0

PARA CALCULAR EL SEGUNDO DÍGITO DE CONTROL
lo mismo que antes pero el primer paso (lo de añadir dos 00 al inicio no debes hacerlo) pero tomando los número de cuenta (N)

** Espero que te sirva

**************************************************
Mi duda:
En mi programa guarde la cuenta como un int
Y guarde la combinación de números como un array para que con un for-in pueda recorrer el array para realizar lo de las multiplicaciones

¿como separo mi cuenta en dígitos?
He pensado en transformar la cuenta en un String y con un lenght ir separando los dígitos
Pero  ¿se os ocurre otro modo más limpio?

1mpuls0

Substring no te serviría?.

La verdad es que es lo más común para separar cadenas, además conoces la cantidad de dígitos.

Saludos.
abc

legnacaido

Cierto.
La verdad que con un lenght me hubiera complicado mucho la vida
Pues, a la manos a la obra, lo intentaré así a ver que tal.

Muchas gracias