Eu comecei imaginando que deveria haver uma lista de quartos disponíveis(coloquei 10), então o meu ficou diferente. Depois de muitos testes e alterações acho que está sem nenhum bug. Segue abaixo:
void main() {
Set <int> quartosLivres = {1,2,3,4,5,6,7,8,9,10};
Set <int> quartosReservados ={};
Cliente clienteAna =Cliente ("Ana", []);
clienteAna.reservar(quartosLivres, quartosReservados);
clienteAna.cancelar(quartosLivres, quartosReservados);
clienteAna.reservar(quartosLivres, quartosReservados);
print("Quartos Livres:$quartosLivres");
print("Quartos Reservados:$quartosReservados");
}
class Cliente {
String nome;
List <int> _quartosCliente;
Cliente(this.nome, this._quartosCliente);
void reservar (quartosLivres, quartosReservados){
for (var reserva in quartosLivres){
if(reserva>=1 && reserva<=10){
quartosReservados.add(reserva);
quartosLivres.remove(reserva);
_quartosCliente.add(reserva);
print("$nome você fez uma reserva. Número dos quartos reservados: $_quartosCliente");
break;
}
}
}
void cancelar (quartosLivres, quartosReservados){
for (var reserva in _quartosCliente){
if(reserva>=1){
quartosReservados.remove(reserva);
quartosLivres.add(reserva);
_quartosCliente.remove(reserva);
print("$nome você cancelou uma reserva. Número dos quartos reservados: $_quartosCliente");
break;
}}}
}
Built reservas_de_hotel:reservas_de_hotel.
Ana você fez uma reserva. Número dos quartos reservados: [1]
Ana você cancelou uma reserva. Número dos quartos reservados: []
Ana você fez uma reserva. Número dos quartos reservados: [2]
Quartos Livres:{3, 4, 5, 6, 7, 8, 9, 10, 1}
Quartos Reservados:{2}