elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con programa Banco y Cuentas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con programa Banco y Cuentas  (Leído 8,214 veces)
pepeneitor33

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con programa Banco y Cuentas
« en: 23 Marzo 2013, 11:48 am »

Tengo que hacer un programa de Bancos y Cuentas, la Clase Cuenta la hice asi

Código
  1. public class Cuenta {
  2. private String titular ;
  3. private double saldo ;
  4. private int cuenta ;
  5. public Cuenta (String ti,  int  c, double s){
  6. setTitular(ti);
  7. setCuenta(c);
  8. setSaldo(s);
  9.  
  10. }
  11. public Cuenta (String f,int d){
  12.  
  13. this(f,d,0.0);
  14. }
  15. public void ingreso(double s){
  16. setSaldo(getSaldo() +s);
  17. }
  18. public void debito (double d){
  19. setSaldo(getSaldo() - d);
  20. }
  21. public String titular(){
  22. return getTitular();
  23. }
  24. public int cuenta (){
  25. return getCuenta();
  26. }
  27. public double s (){
  28. return getSaldo();
  29. }
  30.  
  31. public String toString(){
  32. return "[(" + getTitular() + "/" + getCuenta() + ") ->" + getSaldo() + "]";
  33.  
  34.  
  35. }
  36. public String getTitular() {
  37. return titular;
  38. }
  39. public void setTitular(String titular) {
  40. this.titular = titular;
  41. }
  42. public int getCuenta() {
  43. return cuenta;
  44. }
  45. public void setCuenta(int cuenta) {
  46. this.cuenta = cuenta;
  47. }
  48. public double getSaldo() {
  49. return saldo;
  50. }
  51. public void setSaldo(double saldo) {
  52. this.saldo = saldo;
  53. }
  54. }
  55.  
y la clase Banco asi
Código
  1. private static final int NUMCTALIBRE=1001;
  2. private String nombre;
  3. private int ppl;
  4. private int unca;
  5. public Cuenta [] ctas,ctas2;
  6. public Banco (String b , int un){
  7.  
  8. if (b !=null && b != "" && un>0 ){
  9. nombre=b;
  10. ppl = 0;
  11. unca=NUMCTALIBRE;
  12. ctas= new Cuenta[un];
  13. for (int c=0;c<100;c++){
  14. ctas[c]= new Cuenta ("",0,0);
  15. }
  16. }
  17. else
  18. {
  19. throw new RuntimeException ("error");
  20. }
  21. for(int i=0;i<ctas.length;i++)
  22. {
  23. ctas= new Cuenta[i];
  24. }
  25. }
  26. public Banco (String nom ){
  27.  
  28. this(nom, NCTAS);
  29.  
  30.  
  31. }
  32. public int abrirCuenta (String nombre, double n){
  33. int p=0;
  34.  
  35.  
  36.  
  37.  
  38. if (p <= 99)
  39. {
  40.  
  41. ctas[p]=new Cuenta (nombre,unca,n);
  42. p++;
  43. unca++;
  44.  
  45. }
  46.  
  47. else
  48. {
  49.  
  50. ctas2= new Cuenta [2*ctas.length];
  51.  
  52. for (int j=0; j < ctas.length ; j++)
  53. {
  54. ctas2[j]=ctas[j];
  55. }
  56.  
  57. }
  58.  
  59. return unca;
  60. }
  61.  
  62. public int abrirCuenta (String nom){
  63. this.abrirCuenta(nom,10.0);
  64. return ctas[ppl].getCuenta();
  65. }
  66. public int posicionCuenta (int n){
  67. int i = 0;
  68.  
  69. while (ctas[i].getCuenta()!=n){
  70. i++;
  71. }
  72. if(i>ctas.length){
  73. throw new RuntimeException("No existe la cuenta dada");
  74. }
  75. else{
  76. return i;
  77. }
  78.  
  79. }
  80. public void cerrarCuenta(int n){
  81. int j =posicionCuenta(n);
  82. for (int i=ppl; i>j;i--)
  83. {
  84. ctas[i-1].setSaldo(ctas[i].getSaldo());
  85. ctas[i-1].setTitular(ctas[i].getTitular());
  86. ctas[i-1].setCuenta(ctas[i].getCuenta());
  87. }
  88. ctas[ppl].setTitular("");
  89. ctas[ppl].setSaldo(0);
  90. ctas[ppl].setCuenta(0);
  91.  
  92. }
  93. public void ingreso (int n, double s){
  94. int j= posicionCuenta(n);
  95. ctas[j].setSaldo(ctas[j].getSaldo() + s);
  96.  
  97. }
  98. public double debito (int n, double s){
  99.  
  100. int j= posicionCuenta(n);
  101. if (ctas[j].getSaldo()<s){
  102. return ctas[j].getSaldo();
  103. }
  104. else{
  105. return s;
  106. }
  107. }
  108. public double saldo(int n){
  109. int j= posicionCuenta(n);
  110. return ctas[j].getSaldo();
  111.  
  112. }
  113. public double transferencia(int n,int n2, double s){
  114. int j= posicionCuenta(n);
  115. int j2= posicionCuenta(n2);
  116. ctas[j].setSaldo(ctas[j].getSaldo() + s);
  117. ctas[j2].setSaldo(ctas[j2].getSaldo() - s);
  118. return s;
  119. }
  120. public String toString(){
  121.  
  122. for(int i=0;i<ppl ;i++)
  123. {
  124. System.out.println ("[(" + ctas[i].getTitular() + "/" + ctas[i].getCuenta() + ") ->" + ctas[i].getSaldo() + "]");
  125. }
  126. return null;
  127.  
  128. }

el caso es que llevo horas y horas y siempre me da el error : Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
 
el ejercicio decia lo siguiente

El objetivo de esta práctica es el de crear clases para representar bancos y cuentas
bancarias.
Defínase una clase Cuentade cuentas bancarias. Toda cuenta bancaria vendrá dada
por un número de cuenta (de tipo int), un titular de la cuenta bancaria (de tipo
String) y un saldo (de tipo double). Sobre una cuenta bancaria se podrán realizar
operaciones de ingreso (añadirdinero a la cuenta) y de débito (extraer una cantidad de
dinero de la misma, no importando que el saldo quede negativo), además de operaciones
de consulta del número de la cuenta, su titular y saldo.
Defínase una clase Bancopara representar bancos. Un banco tendrá un nombre (dado
en el constructor) y dispondrá de una colección de cuentas bancarias (representadas en
un array de cuentas). Además, la clase Bancocontendrá las variables de instancia
pply uncaque representan respectivamente la primeraposición libre en el array de
cuentas (están en posiciones contiguas) y el primer número de cuenta libre, de forma
que una vez asignado el número a una nueva cuenta este contador se debe incrementar.
El valor inicial de uncaserá el de la constante NUMCTALIBRE (1001)
La clase Banco debe proporcionar métodos para llevar a cabo operacionesde ingreso,
de débito o de consulta de saldo sobre cualquiera de sus cuentas dado su número de
cuenta, así como una operación de transferencia entre dos cuentas bancarias indicando
los números de cuenta de la cuenta origen y de la cuenta destino y la cantidad a
transferir. Los métodos abrirCuentay cerrarCuentase encargarán de crear una
nueva cuenta bancaria y de cerrar una existente. Para abrir una cuenta bancaria bastará
con proporcionar el nombre del titular de la cuenta (suponemos un único titular por
cuenta), si no se indica saldo inicial la cuenta se creará con saldo cero. El banco se
encargaráde asignar un número de cuentaa la nueva cuenta, que será devuelto como
resultado de la operación. A la hora de cerrar una cuenta existente, después de su
2
supresión las cuentas restantes habrán de ocupar posiciones contiguas en el array de
cuentas.
Algunas cuestiones:
•  Los constructores de la clase Banco se encargarán de crear el array de cuentas
con un tamaño inicial, así como  de dar valores iniciales a las variables
auxiliares. El segundo argumento del constructor de Banco con dos argumentos
indica el tamaño inicial del array de cuentas. En el constructor con un argumento
el array se inicializará con un tamaño por defecto (10definido en la constante
NCTAS).
•  La creación de cuentas no debe fallar porque el array esté lleno; en caso de no
quedar espacio enel array se creará un array (de doble capacidad)para habilitar
más espacio.
•  Un banco no permite que una cuenta quede con saldo negativo. Si se intenta
realizar un débito por una cantidad mayor que el saldo, solo se permitirá extraer
el saldo. En ese caso, el saldo quedará a 0 y se devolverá el dinero que realmente
se ha extraído de la cuenta.
•  Para facilitar la implementación de algunos métodos se debe implementar un
método llamado posicionCuenta. Éstees un método auxiliar que devuelve
la posición dentrodel array de cuentas en la que se encuentra la cuenta con el
número de cuenta dadocomo argumento.Si la cuenta no existe, el método debe
lanzar una excepción RuntimeException de la siguiente manera:
throw new RuntimeException(“No existe la cuenta
dada”);
•  Se debe proporcionar una redefinición del método toStringpara las clases
CuentayBanco
Al ejecutar la siguiente clase de prueba TestBanco, el resultado ha de ser el
mostrado más abajo.

Me podeis ayudar muchas gracias de antemano


« Última modificación: 21 Abril 2013, 23:30 pm por Debci » En línea

javituni

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayuda con programa Banco y Cuentas
« Respuesta #1 en: 16 Abril 2013, 01:01 am »

has creado dos constructores para la clase cuenta?


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda banco del tiempo
Desarrollo Web
txus93 0 1,765 Último mensaje 21 Noviembre 2013, 00:58 am
por txus93
El Banco Central chino ordena cerrar todas las cuentas con bitcoins
Noticias
wolfbcn 4 2,068 Último mensaje 29 Marzo 2014, 15:25 pm
por Kami
Tus cuentas quedarán bloqueadas si tu banco no tiene tu DNI digitalizado ....
Noticias
wolfbcn 0 2,110 Último mensaje 24 Marzo 2015, 21:19 pm
por wolfbcn
Programa d eun Banco AYUDA!
Java
SMHEBER 2 3,183 Último mensaje 2 Octubre 2017, 17:10 pm
por PalitroqueZ
El banco móvil N26 ya ofrece cuentas con IBAN español
Noticias
wolfbcn 2 1,256 Último mensaje 24 Abril 2019, 22:40 pm
por B€T€B€
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines