Code for button input not showing the correct results

I am making a small project that there are 4 buttons, 1 2 3 and reset, 1 adds 1 to score 2 adds to 2 to score 3 adds 3 to score and reset resets score to 0. For some reason, this code just produces the 1,2 or 3 times table in the serial monitor. Like this:

3
6
9
12
15
18
21
24
27
30
33
36
39
42
45
48
51
54
57
60
63
66
69
72
75
78
81
84
87
90
93
96
99
102
const int buttonPin1 = 2;
const int buttonPin2 = 3;
const int buttonPin3 = 4;
const int resetPin = 5;

int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int resetState = 0;

int score = 0;

void setup() {
  // put your setup code here, to run once:
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(resetPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);
  resetState = digitalRead(resetPin);

  if (buttonState1 == HIGH) {
    score += 1;
    Serial.println(score);
  }
  if (buttonState2 == HIGH) {
    score += 2;
    Serial.println(score);
  }
  if (buttonState3 == HIGH) {
    score += 3;
    Serial.println(score);
  }
  if (resetState == HIGH) {
    score == 0;
    Serial.println(score);
  }
}

please help!

Sounds like a floating input on button three. How are the buttons wired?

(deleted)

How are the inputs wired ?
Any pulldown resistors in place to keep them LOW when buttons are not pressed ?

If not then consider using INPUT_PULLUP in pinMode() to activate the built in pullup resistors, change your program to test for LOW when buttons are pressed and change your wiring to take the inputs to GND when the buttons are pressed

Oh I just have buttons with two pins so I don't know how to use that.

robtherobot:
Oh I just have buttons with two pins so I don't know how to use that.

Do as I suggest and use INPUT_PULLUP in the pinMode()s noting the code and wiring changes that also need to be made

Change your code like so. Change your wiring to have one pin of the button connect to pin 2,3,4 or 5. Connect the other pin to Gnd.

const int buttonPin1 = 2;
const int buttonPin2 = 3;
const int buttonPin3 = 4;
const int resetPin = 5;

int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int resetState = 0;

int score = 0;

void setup() {
  // put your setup code here, to run once:
  pinMode(buttonPin1, INPUT_PULLUP); // use internal pullup
  pinMode(buttonPin2, INPUT_PULLUP);
  pinMode(buttonPin3, INPUT_PULLUP);
  pinMode(resetPin, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);
  resetState = digitalRead(resetPin);

  if (buttonState1 == LOW) { // LOW indicates button is pressed
    score += 1;
    Serial.println(score);
  }
  if (buttonState2 == LOW) {
    score += 2;
    Serial.println(score);
  }
  if (buttonState3 == LOW) {
    score += 3;
    Serial.println(score);
  }
  if (resetState == LOW) {
    score == 0;
    Serial.println(score);
  }
}

Might want to add a little delay after each reading, say
delay(200);
so a press & hold only increments a 5 increase a second or something.

Just that simple.

Thanks!