It looks like your buttons are wired between the Arduino pin and the + rail (that is digitalRead returns HIGH when pressed). Have you got pull-down resistors on the buttons ? If not, that could explain the erratic behaviour you have described.
Incidentally, it more usual to wire buttons on the low side, so you can use the built in pull-up resistors.