2
« en: 11 de Mayo 2022, 03:57 »
Hola, tengo una duda. Tengo el siguiente código pero no sé cómo arreglar el problema que hace que no compile.
El código es el siguiente:
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
class CCC {
//Propiedades de la clase CCC
private double saldoDeCuenta;
private String nombreDelTitular;
private long numeroDeCuenta;
//Constructor de la clase CCC
public CCC (String nombreDelTitular, double saldoDeCuenta)
{
this.saldoDeCuenta = saldoDeCuenta;
this.nombreDelTitular = nombreDelTitular;
Random numAleatorioCuenta = new Random();
this.numeroDeCuenta = Math.abs(numAleatorioCuenta.nextLong());
}
//Setters
//Setter para aumentar el saldo de la cuenta bancaria (hacer un ingreso)
public void setIngreso (double ingreso)
{
if (ingreso <= 0)
System.out.println("El ingreso debe ser superior a cero euros");
else
saldoDeCuenta = saldoDeCuenta + ingreso;
}
//Setter para disminuir el saldo de la cuenta bancaria (sacar dinero)
public void setReintegro (double reintegro)
{
if (reintegro <= 0)
System.out.println("El reintegro debe ser superior a cero euros");
else
saldoDeCuenta = saldoDeCuenta - reintegro;
}
//Getters
//Getter que devuelve el saldo actual de la cuenta bancaria
public Double getSaldoCuenta ()
{
return saldoDeCuenta;
}
//Getter que obtiene todos los datos de la cuenta bancaria en un List
//Se puede usar cualquier otra opción para devolver los datos
public List<String> getDatosCuenta ()
{
List<String> datosCuenta = new ArrayList<>();
datosCuenta.add(nombreDelTitular);
datosCuenta.add(Long.toString(numeroDeCuenta));
//Redondeamos a dos decimales el saldo
DecimalFormat saldoRedondeado = new DecimalFormat("###.##");
datosCuenta.add(saldoRedondeado.format(saldoDeCuenta));
return datosCuenta;
}
//Métodos
//Método que incrementa el saldo de una CCC de destino y lo decrementa en la CCC origen
//Para realizar una transferencia de una CCC a otra
public static void RealizarTransferenciaEntreCuentas (CCC ccc1, CCC ccc2, double importeTransferencia)
{
ccc1.saldoDeCuenta = ccc1.saldoDeCuenta - importeTransferencia;
ccc2.saldoDeCuenta = ccc2.saldoDeCuenta + importeTransferencia;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
import javafx.util.Pair;
import java.util.List;
import java.util.Scanner;
public class OperacionesBanco
{
public static void main(String[] args)
{
//Para la primera cuenta bancaria
System.out.println("Cuenta bancaria 1");
//Pedimos el Titular y el Saldo de la primera cuenta bancaria
//Lo almacenamos en un Pair (titular, saldo)
Pair<String, Double> datos = pedirDatosUsuario();
//Instanciar la clase CCC y crear la clase CCC_1
CCC CCC_1 = new CCC (datos.getKey(), datos.getValue());
//Repetimos el mismo proceso para crear la CCC_2
//Para la segunda cuenta bancaria
System.out.println("Cuenta bancaria 2");
datos = pedirDatosUsuario();
CCC CCC_2 = new CCC (datos.getKey(), datos.getValue());
//Hacemos una transferencia desde la CCC_1 a la CCC_2
Double importe = pedirImporteUsuario();
CCC.RealizarTransferenciaEntreCuentas(CCC_1, CCC_2, importe);
//Mostramos los datos de las cuentas bancarias por consola
System.out.println("Datos de la CCC 1");
List<String> datosCuenta;
datosCuenta = CCC_1.getDatosCuenta();
System.out.println(" -> Titular: " + datosCuenta.get(0));
System.out.println(" -> Nº de cuenta: " + datosCuenta.get(1));
System.out.println(" -> Saldo: " + datosCuenta.get(2));
System.out.println("\nDatos de la CCC 2");
datosCuenta = CCC_2.getDatosCuenta();
System.out.println(" -> Titular: " + datosCuenta.get(0));
System.out.println(" -> Nº de cuenta: " + datosCuenta.get(1));
System.out.println(" -> Saldo: " + datosCuenta.get(2));
}
//Solicita el titular de la cuenta y el saldo por consola al usuario
//Almacena los datos en un Pair, donde la Key será el Titular y el Value el saldo
public static Pair<String, Double> pedirDatosUsuario()
{
//Pedimos los datos al usuario por consola para la primera cuenta corriente
System.out.print ("Introduzca el nombre del titular: ");
Scanner entradaEscaner = new Scanner (System.in); //Creamos de un objeto Scanner
String titular = entradaEscaner.nextLine (); //Invocamos un método sobre el objeto Scanner
Double saldo = 0.0;
System.out.print ("Introduzca el saldo inicial: ");
//Comprueba que sólo se introduzcan números válidos (Double)
while(!entradaEscaner.hasNextDouble())
{
System.out.print("No ha introducido un saldo correcto.\n" +
"Vuelva a intentarlo (sólo números y decimales): ");
entradaEscaner.nextLine();
}
saldo = entradaEscaner.nextDouble();
return new Pair<>(titular, saldo);
}
//Solicita el importe a transferir entre cuentas al usuario
public static Double pedirImporteUsuario()
{
//Pedimos el importe al usuario por consola
Scanner entradaEscaner = new Scanner (System.in); //Creamos de un objeto Scanner
Double importe = 0.0;
System.out.print ("\nIntroduzca el importe a transferir entre cuentas: ");
//Comprueba que sólo se introduzcan números válidos (Double)
while(!entradaEscaner.hasNextDouble())
{
System.out.print("No ha introducido un importe correcto.\n" +
"Vuelva a intentarlo (sólo números y decimales): ");
entradaEscaner.nextLine();
}
importe = entradaEscaner.nextDouble();
entradaEscaner.close();
return importe;
}
}