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 originalpublic class Objetivo1 {
private static HashMap
<String, Float
> saldoCuenta
= new HashMap
<String, Float
>();
public static void main
(String[] args
) { cargarCuentas();
mostrarCuentas("SALDOS INICIALES\n");
procesaFacturas();
mostrarCuentas("\nSALDOS FINALES\n");
System.
out.
println("\nfin objetivo1"); }
private static void mostrarCuentas
(String cabecera
) { Set<String> set = saldoCuenta.keySet();
Iterator<String> iter = set.iterator();
while (iter.hasNext()) {
Object saldo
= saldoCuenta.
get(cuenta
); System.
out.
print(cuenta
+ " Saldo: " + saldo
+ " €\n"); }
}
private static void procesaFacturas() {
try {
System.
out.
println("\nMOVIMIENTOS A LAS CUENTAS\n"); "datos/Facturas2.txt"), 1024);
while ((linea = fichero.readLine()) != null) {
String cuenta
= (linea.
split("@")[0]); String tipo
= (linea.
split("@")[1]); Float importe
= Float.
parseFloat(linea.
split("@")[2]); Float saldoActual
= saldoCuenta.
get(cuenta
);
if(tipo.compareTo("A") == 0 || tipo.compareTo("C") == 0) {
if(tipo.compareTo("A") == 0) { // abono
nuevoSaldo = saldoActual + importe;
saldoCuenta.put(cuenta, nuevoSaldo);
System.
out.
print(cuenta
+ " = " + tipo
+ ", " + importe
+ "\n"); }
if(tipo.compareTo("C") == 0) { // cargo
nuevoSaldo = saldoActual - importe;
saldoCuenta.put(cuenta, nuevoSaldo);
System.
out.
print(cuenta
+ " = " + tipo
+ ", " + importe
+ "\n"); }
} else {
System.
out.
println(cuenta
+ " = tipo de operación invalida, " + importe
+ "\n");} }
System.
out.
println("Formato del número invalido"); System.
out.
println("Valores cargados incorrectos"); System.
out.
println("Fichero inexistente"); }
}
private static void cargarCuentas() {
/*
* Método que lee el fichero de cuentas y lo carga en un HashMap
*/
try {
"datos/Cuentas2.txt"), 1024);
while ((linea = fichero.readLine()) != null) {
String numCuenta
= (linea.
split("#")[0]); Float saldo
= Float.
parseFloat(linea.
split("#")[1]); saldoCuenta.put(numCuenta, saldo);// se carga HashMap con saldos de cuentas
}
fichero.close();
System.
out.
println("Punto nulo NO FUNCIONA AÚN ni la captura"); System.
out.
println("Formato del número invalido"); System.
out.
println("Valores cargados incorrectos"); System.
out.
println("Fichero inexistente"); System.
out.
println("Capturada IllegalArgumentException"); System.
out.
println("Capturada IOException"); }
}
}