Next time a guy doesn't take no for an answer, whether you're at the gym, a bar, work or at a store, report him to someone in charge. If it happens while you're out in public, stay close to a group of people and either try to duck into a store or building to get away from him or call the cops.  Some people can be incredibly aggressive, so you have to be aggressive when it comes to dealing with them. And if you think you may ever be in a situation where your safety and wellbeing might be compromised by a creep, then start carrying mace and take a self defense class (Krav Maga is my recommendation).  Confrontation is uncomfortable, I get it, I really do, and I completely understand where you're coming from, but it's better to deal with these guys right then and there instead of giving in and allowing them to have false hope that their inappropriate behavior worked for them.