What are you actually trying to do? Is this code part of a trigger? I'll assume it is. The problem is that :new is being treated as a bind variable in dynamic SQL, not as the trigger :new pseudovariable.
There is no way to access :new.answer1, :new.answer2, ... etc. using a loop counter as part of the name - it just doesn't work. You'll have to forego the loop and type: