I should initialize these buttons button pins as inputs
I don't think that that will help.
int read_LCD_buttons(){ // read the buttons
adc_key_in = analogRead(0); // read the value from the sensor
}
analogRead returns a number between 0 and 1023. Your read_LCD_buttons() should return an int but since there is no return statement, the function returns nothing. If the read_LCD_buttons did return a meaningful number, the number would be between 0 and 1023, but your switch only reacts to 0, 1, 2 3. See how the buttons are handled in this tutorial.