Hello,
The first problem happens because you don't check if you have printed a 'v' for a vampire already, so you will always print a '@' or a '.' even if you printed a 'v' for the same spot. A way to solve this problem would be to somehow remember if something was printed for this position already, for example by using a boolean variable.
The second problem is because you are removing something from the list while iterating through it. In Java, you cannot modify a list while iterating through it. A way to go around this limitation is to add the vampires that should be removed into another temporary list, and after the for-loop, use list.removeAll(temporaryList) to remove the vampires.
The role of the vampiresMove is to control whether the vampires should move or not. If it is set to false, the vampires should stay still.
Hope you will be able to continue with these hints :)
Best regards,
Juho