Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/06/2013, 17:33
Avatar de blittcer
blittcer
 
Fecha de Ingreso: noviembre-2007
Mensajes: 125
Antigüedad: 17 años
Puntos: 1
Comparar una cadena para evitar excepcion

Buenas tengo un problema con un ejercicio de persistencia de objetos aunque básicamente el problema reside en el control de variables... en evitar una excepción... comparar 2 cadenas...

Tenemos 2 archivos:

cuentas.txt -> (cuentas, saldo)

CUENTA1#1500
CUENTA2#3400
CUENTA3#2000

facturas.txt -> (cuentas, cargo/abono *, saldo)

CUENTA1@A@20
CUENTA1@C@20
CUENTA3@A@40
CUENTA2@C@50
CUENTA5@A@30

*un cargo es resta y un abono es suma

Problema 1: Necesito que cuando en facturas.txt se incluya una CUENTA5 por ejemplo que no existe en cuentas.txt. hacer un if comparando con un equals por ejemplo las cuentas y si no existe la cuenta haga un system.out.println diciéndolo, pero no termine el programa.

Problema 2: Evitar una lectura errónea, tipo XXXXX@XX o simplemente asndsadn1234, cualquier lectura que no mantenga las proporciones.

Hay varios métodos, hashmap, arraylist, etc. Aquí va el código...

Código Java:
Ver original
  1. public class Objetivo1 {
  2.     private static HashMap<String, Float> saldoCuenta = new HashMap<String, Float>();
  3.  
  4.     public static void main(String[] args) {
  5.         cargarCuentas();
  6.         mostrarCuentas("SALDOS INICIALES\n");
  7.         procesaFacturas();
  8.         mostrarCuentas("\nSALDOS FINALES\n");
  9.         System.out.println("\nfin objetivo1");
  10.     }
  11.  
  12.     private static void mostrarCuentas(String cabecera) {
  13.         System.out.println(cabecera);
  14.         Set<String> set = saldoCuenta.keySet();
  15.         Iterator<String> iter = set.iterator();
  16.         while (iter.hasNext()) {
  17.             Object cuenta = iter.next();
  18.             Object saldo = saldoCuenta.get(cuenta);
  19.             System.out.print(cuenta + " Saldo: " + saldo + " €\n");
  20.         }
  21.     }
  22.  
  23.     private static void procesaFacturas() {
  24.         try {
  25.             System.out.println("\nMOVIMIENTOS A LAS CUENTAS\n");
  26.             String linea;
  27.             BufferedReader fichero = new BufferedReader(new FileReader(
  28.                     "datos/Facturas2.txt"), 1024);
  29.             while ((linea = fichero.readLine()) != null) {
  30.                 String cuenta = (linea.split("@")[0]);
  31.                 String tipo = (linea.split("@")[1]);
  32.                 Float importe = Float.parseFloat(linea.split("@")[2]);
  33.                 Float saldoActual = saldoCuenta.get(cuenta);
  34.                 Float nuevoSaldo;
  35.  
  36.             if(tipo.compareTo("A") == 0 || tipo.compareTo("C") == 0) {
  37.                 if(tipo.compareTo("A") == 0) { // abono
  38.                     nuevoSaldo = saldoActual + importe;
  39.                     saldoCuenta.put(cuenta, nuevoSaldo);
  40.                     System.out.print(cuenta + " = " + tipo + ", " + importe + "\n");
  41.                 }  
  42.                 if(tipo.compareTo("C") == 0) {  // cargo
  43.                     nuevoSaldo = saldoActual - importe;
  44.                     saldoCuenta.put(cuenta, nuevoSaldo);
  45.                     System.out.print(cuenta + " = " + tipo + ", " + importe + "\n");
  46.                 }  
  47.             } else {
  48.                  System.out.println(cuenta + " = tipo de operación invalida, " + importe + "\n");}
  49.             }
  50.         } catch (NumberFormatException e) {
  51.             System.out.println("Formato del número invalido");
  52.         } catch (ArrayIndexOutOfBoundsException e) {
  53.             System.out.println("Valores cargados incorrectos");
  54.         } catch (IOException e) {
  55.             System.out.println("Fichero inexistente");
  56.         }
  57.     }
  58.  
  59.     private static void cargarCuentas() {
  60.         /*
  61.          * Método que lee el fichero de cuentas y lo carga en un HashMap
  62.          */
  63.         try {
  64.             String linea;
  65.             BufferedReader fichero = new BufferedReader(new FileReader(
  66.                     "datos/Cuentas2.txt"), 1024);
  67.             while ((linea = fichero.readLine()) != null) {
  68.                 String numCuenta = (linea.split("#")[0]);
  69.                 Float saldo = Float.parseFloat(linea.split("#")[1]);
  70.                 saldoCuenta.put(numCuenta, saldo);// se carga HashMap con saldos de cuentas
  71.             }
  72.             fichero.close();
  73.         } catch (NullPointerException e) {
  74.             System.out.println("Punto nulo NO FUNCIONA AÚN ni la captura");
  75.         } catch (NumberFormatException e) {
  76.             System.out.println("Formato del número invalido");
  77.         } catch (ArrayIndexOutOfBoundsException e) {
  78.             System.out.println("Valores cargados incorrectos");
  79.         } catch (FileNotFoundException e) {
  80.             System.out.println("Fichero inexistente");
  81.         } catch (IllegalArgumentException e) {
  82.             System.out.println("Capturada IllegalArgumentException");
  83.         } catch (IOException e) {
  84.             System.out.println("Capturada IOException");
  85.         }
  86.     }
  87. }
__________________
Si vas al Gimnasio y quieres conseguir buenos resultados: Fitness, Dietas y Entrenamientos

Última edición por blittcer; 02/06/2013 a las 17:55