Hamlet doesn’t kill Claudius right away because he wants to ensure that he is guilty before taking revenge. He is also struggling with his own doubts and uncertainties and looks for the best moment to do the klling, causing him to hesitate and delay.