Add a newline after every nextInt():
int donation = keyboard.nextInt();
keyboard.nextLine();
nextLine()[
^] and
nextInt()[
^] behave differently.
+++++[More Elaboration]+++++
nextInt() only takes the next integer inputted, ignoring the newline, which is then taken in by
String personname = keyboard.nextLine()
in the next iteration, that explained why it was skipped without waiting for user's input. The standalone keyboard.nextLine() after the nextInt() is just a hack to absorb this left over newline before it go to String personname = keyboard.nextLine().