Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Locale;
- import java.util.InputMismatchException;
- import java.util.Scanner;
- import java.io.PrintWriter;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.IOException;
- import java.io.Serializable;
- /**
- * Clase Banco para representar un conjunto de cuentas.
- * @author PRG
- * @version Curso 2016/17
- */
- public class Banco implements Serializable {
- /** Número máximo de cuentas. */
- public static final int MAX_CUENTAS = 100;
- /** Array de objetos Cuenta. */
- private Cuenta[] cuentas;
- /** Número actual de cuentas
- * y primer índice disponible en el array cuentas. */
- private int numCuentas;
- /**
- * Crea un banco sin cuentas
- * (puede tener un máximo de MAX_CUENTAS cuentas).
- */
- public Banco() {
- this.cuentas = new Cuenta[MAX_CUENTAS];
- this.numCuentas = 0;
- }
- /**
- * Devuelve el número actual de cuentas.
- * @return int, número actual de cuentas.
- */
- public int getNumCuentas() { return numCuentas; }
- /**
- * Permite añadir o insertar la Cuenta c al banco.
- * Si el banco está completo,
- * duplica el número de cuentas que pueden haber en el banco.
- * @param c Cuenta a añadir.
- */
- public void insertar(Cuenta c) {
- if (numCuentas >= cuentas.length) { duplica(); }
- cuentas[numCuentas++] = c;
- }
- /**
- * Duplica el tamaño del array cuentas.
- */
- private void duplica() {
- Cuenta[] aux = new Cuenta[2 * cuentas.length];
- for (int i = 0; i < cuentas.length; i++) { aux[i] = cuentas[i]; }
- cuentas = aux;
- }
- /**
- * Devuelve la cuenta con número de cuenta n.
- * Si tal cuenta no existe, devuelve null.
- * @param n int que indica el número de cuenta.
- * @return Cuenta, la cuenta resultado.
- */
- public Cuenta getCuenta(int n) {
- int i = 0;
- while (i < numCuentas && cuentas[i].getNumCuenta() != n) { i++; }
- if (i < numCuentas) { return cuentas[i]; }
- else { return null; }
- }
- /**
- * Devuelve una String con toda la información del banco.
- * El formato es una cuenta por línea.
- * @return String.
- */
- public String toString() {
- if (numCuentas == 0) { return "No hay cuentas en el banco"; }
- else {
- String res = "";
- for (int i = 0; i < numCuentas; i++) { res += cuentas[i] + "\n"; }
- return res;
- }
- }
- public void cargarFormatoTexto(Scanner f) {
- while(f.hasNext()) {
- try{
- int numCuenta = f.nextInt();
- double saldo = f.nextDouble();
- if (numCuenta > 99999 || numCuenta <= 9999 || saldo < 0) {
- throw new InputMismatchException ("Valor incorrecto");
- }
- Cuenta c1 = new Cuenta(numCuenta, saldo);
- if (this.getCuenta(numCuenta) == null) { this.insertar(c1); }
- }
- catch (InputMismatchException e1) { }
- finally { f.nextLine(); }
- }
- }
- public void guardarFormatoTexto(PrintWriter f) {
- f.println(this.toString());
- }
- public void guardarFormatoObjeto(ObjectOutputStream f) {
- try{
- f.writeObject(this);
- } catch (IOException e) {
- System.out.println("Error al guardar el archivo binario.");
- }
- }
- public void cargarFormatoObjeto(ObjectInputStream f){
- Banco b = null;
- try {
- b = (Banco) f.readObject();
- }
- catch (java.io.IOException e1) {
- System.out.println("Error al cargar el archivo binario.");
- }
- catch (ClassNotFoundException e2) {}
- if (b != null){
- for (int i = 0; i < b.numCuentas; i++) {
- if (this.getCuenta(b.cuentas[i].getNumCuenta()) == null) {
- this.insertar(b.cuentas[i]);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement