Para eso, tienes dos opciones.
1. La más fácil y por tanto la más recomendable.
Añadir como atributo de
Cliente un double donde acumular los importes de sus compras.
public class Cliente {
private int id;
private String nombres;
private String apellidos;
private String email;
private int telefono;
private StringBuilder facturacion; //Simula un histórico de ventas´
private double totalFacturado;
public Cliente (int id, String nombres, String apellidos, String email, int telefono) {
this.id = id;
this.nombres = nombres;
this.apellidos = apellidos;
this.email=email;
this.telefono = telefono;
facturacion = new StringBuilder();
totalFacturado = 0;
}
Así luego, en su método facturar(), no solo le pasamos la línea para el StringBuilder, si no también el importe de la venta, que ha sido calculado en el main
/*
* Añade una nueva línea de facturación
* al StringBuilder
*/
public void facturar(String linea, double importe) {
facturacion.append(linea);
totalFacturado += importe;
}
Ahora en el
Main, además de pasarle la línea
formateada para el StringBuilder, le pasaremos también el importe double para que lo sume a su nuevo atributo:
//Y también en la facturación personal del comprador
comprador.facturar(String.format("Codigo: %s Nombre: %s Unidades compradas: %d Importe: %.2f\n",
codigo, solicitado.getNombre(), unidades, facturar), facturar);
2- Un poco más compleja pero que no requiere añadir atributos ni cambiar nada en el main.
Hacer
malabarismos con la clase String para detectar y extraer los caracteres que representan los importes, convertirlos a double y sumarlos.
El StringBuilder contiene una serie de líneas de cadenas, cada una con el importe al final de ella.
Pues habrá que separar estas líneas, detectar donde se encuentra el importe, extraerlo para poder convertirlo a double y poder hacer una suma con los importes de todas las líneas.
Todo este proceso lo haríamos en el método mostrarDetalles(), y solo si hay algo facturado.
public void mostrarDetalles() {
System.out.println("ID: " + id);
System.out.println("Nombre: " + nombres + " " + apellidos);
System.out.println("E-Mail: " + email + " Telf: " + telefono);
System.out.println("\tFACTURACION");
System.out.println(facturacion.length()==0?"No hay historico de ventas":facturacion.toString());
//Hacemos una suma del total facturado, si es que hay facturas
if (facturacion.length() > 0) {
double total = 0;
//1-Creamos un arreglo donde cada elemento es una linea del StringBuilder
String[] lineas = facturacion.toString().split("\n");
//2-Recorremos cada linea con un bucle
for (int in = 0; in < lineas.length; in++) {
//3-Buscamos el último espacio en blanco de cada linea
int pos = lineas[in].lastIndexOf(" ");
//4-Tras ese último espacio en blanco, está el importe de la venta, lo extraemos
String importe = lineas[in].substring(pos+1);
//5-El importe está escrito con "coma decimal", pero el parseo solo funciona con "punto decimal".
//Lo reemplazamos
importe = importe.replace(',' , '.');
//6-Parseamos a double y lo acumulamos en el total
total += Double.parseDouble(importe);
}
//6-Finalizado el bucle, ya tenemos el total
System.out.printf("\nEl total de los importes es: %.2f\n", total);
}
}
Como ves, serviría para hacer un examen sobre la clase
String y el tratamiento de cadenas.

Es enrevesado, pero funciona, si lo ejecutamos veremos que se realiza la suma de importes correctamente.
ELECTRODOMESTICOS ELECTROHOGAR
MENU DE OPCIONES
1 = Listar Inventario
2 = Venta
3 = Facturacion
4 = Gestion Inventario
5 = Gestion Clientes
0 = Salir
Elija la opcion: 2
Indique el ID del Cliente
ID: 19034211
Cliente identificado:
[id= 19034211, nombre= Laura, apellidos= Juan, email= lajuanita@hotmail.com, telefono= 3451212]
Indique el CODIGO del electrodoméstico para realizar la venta.
CODIGO: LAV-0090
Detalles del producto:
Clase Lavadora
Marca: Whirlpool
Precio 109.9
Cantidad: 4
Capacidad de Lavado: 18Kg
Ciclos: 8
Velocidad: 1200
Unidades a facturar (MAX=4): 2
Importe a pagar: 246,18
Gracias por su compra
ELECTRODOMESTICOS ELECTROHOGAR
MENU DE OPCIONES
1 = Listar Inventario
2 = Venta
3 = Facturacion
4 = Gestion Inventario
5 = Gestion Clientes
0 = Salir
Elija la opcion: 2
Indique el ID del Cliente
ID: 19034211
Cliente identificado:
[id= 19034211, nombre= Laura, apellidos= Juan, email= lajuanita@hotmail.com, telefono= 3451212]
Indique el CODIGO del electrodoméstico para realizar la venta.
CODIGO: COC-0350
Detalles del producto:
Clase Cocina
Marca: Miele
Precio: 109.9
Nº de Hornillas: 4
Con Horno
Sistema de Coccion: Induccion
Unidades a facturar (MAX=4): 1
Importe a pagar: 123,09
Gracias por su compra
ELECTRODOMESTICOS ELECTROHOGAR
MENU DE OPCIONES
1 = Listar Inventario
2 = Venta
3 = Facturacion
4 = Gestion Inventario
5 = Gestion Clientes
0 = Salir
Elija la opcion: 5
GESTION CLIENTES
1 == Añadir Cliente
2 == Eliminar Cliente
3 == Listar Clientes
0 == Regresar Menu Principal
Opcion: 3
LISTADO DE CLIENTES
***********************
ID: 17183451
Nombre: Roberto Torres
E-Mail: roberto@hotmail.com Telf: 2134121
FACTURACION
No hay historico de ventas
***********************
ID: 19034211
Nombre: Laura Juan
E-Mail: lajuanita@hotmail.com Telf: 3451212
FACTURACION
Codigo: LAV-0090 Nombre: Renta Max Unidades compradas: 2 Importe: 246,18
Codigo: COC-0350 Nombre: Pyro Master Unidades compradas: 1 Importe: 123,09
El total de los importes es: 369,27
***********************
GESTION CLIENTES
1 == Añadir Cliente
2 == Eliminar Cliente
3 == Listar Clientes
0 == Regresar Menu Principal
Opcion: 0
Regresando a menu principal...
ELECTRODOMESTICOS ELECTROHOGAR
MENU DE OPCIONES
1 = Listar Inventario
2 = Venta
3 = Facturacion
4 = Gestion Inventario
5 = Gestion Clientes
0 = Salir
Elija la opcion: 0
FIN DE PROGRAMA