To increment and decrement using LCD keypad shield E-277

I am trying to configure first a UP and Down or Increment and Decrement control for a display to show a value of box number increasing by one or decreasing by one. I have attached my code.
When I press the up or down button on my keypad, it increments or decrements accordingly but doesn't stop. I want it to increment/ decrement the value once and stop until I press the button again. Please help me with this code. Thanks.

//LCD TESTING

#include<LiquidCrystal.h>
LiquidCrystal lcd(8,9,4,5,6,7);

int lcd_key=0;
int adc_key_in;

#define UP 1 //144
#define DOWN 2 //329
#define LEFT 3 //504

int num=0;

int read_LCD_buttons()
{
adc_key_in=analogRead(0); //read value at analog pin 0

//buttons when read are centered at 0,144,329,504,741

if((adc_key_in > 50) && (adc_key_in < 150 ))
{
lcd.setCursor(0,1);
lcd.print(adc_key_in);
delay(3000);
lcd.print(" ");
return UP;
}

if((adc_key_in > 150) && (adc_key_in < 350 ))
{
lcd.setCursor(0,1);
lcd.print(adc_key_in);
delay(3000);
lcd.setCursor(0,1);
lcd.print(" ");
return DOWN;
}

if((adc_key_in > 350) && (adc_key_in < 550 ))
{
lcd.print(adc_key_in);

}

}

void setup() {
// put your setup code here, to run once:
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("AMD");
delay(3000);
lcd.clear();
lcd.print("box no : " );
delay(3000);
}

void loop() {
// put your main code here, to run repeatedly:
lcd_key=0;
lcd_key=read_LCD_buttons();
delay(2000);
adc_key_in=0;
lcd.setCursor(0,1);

if(lcd_key==1)
{
lcd.setCursor(0,1);
delay(3000);
lcd.print(++num);
}

if(lcd_key==2)
{ //down
lcd.print(--num);
}
}
/* case 3: //left
lcd.print("LEFT");
break;
}*/