So I have been working on a 2D Java game recently and everything was going smoothly, until I reached a problem to do with the players jumping mechanic. So far I've got the player to jump a fixed rate and fall due to gravity.
Hers my code for my Player class.
public class Player extends GameObject {
public Player(int x, int y, int width, int height, ObjectId id) {
    super(x, y, width, height, id);
}
@Override
public void tick(ArrayList<GameObject> object) {
    if(go){
        x+=vx;
        y+=vy;
    }
    if(vx <0){
        facing =-1;
    }else if(vx >0) 
        facing =1;
    checkCollision(object);
    checkStance();
}
private void checkStance() {
    if(falling){ //gravity
        jumping = false;
        vy = speed/2;
    }
    if(jumping){  // Calculates how high jump should be
        vy = -speed*2;
        if(jumpY - y >= maxJumpHeight)
            falling =true;
    }
  } 
private void checkCollision(ArrayList<GameObject> object) {
    for(int i=0; i< object.size(); i++ ){
        GameObject tempObject = object.get(i);
        if(tempObject.getId() == ObjectId.Ledge){
            if(getBoundsTop().intersects(tempObject.getBoundsAll())){         //Top
                y = tempObject.getY() + tempObject.getBoundsAll().height;
                falling =true;              
            }
            if(getBoundsRight().intersects(tempObject.getBoundsAll())){      // Right
                x = tempObject.getX() -width ;
            }
             if(getBoundsLeft().intersects(tempObject.getBoundsAll())){       //Left
                x = tempObject.getX() + tempObject.getWidth();
            }
             if(getBoundsBottom().intersects(tempObject.getBoundsAll())){          //Bottom
                y = tempObject.getY() - height;
                falling =false;
                vy=0;   
            }else{
                falling =true;
            }
    }
  }
}
@Override
public void render(Graphics g) {
    g.setColor(Color.BLACK);
    g.fillRect((int)x, (int)y, width, height);
}
@Override
public Rectangle getBoundsAll() {
    return new Rectangle((int)x, (int)y,width,height);
}
public Rectangle getBoundsTop() {
    return new Rectangle((int) x , (int)y ,width,height/15);
}
public Rectangle getBoundsBottom() {
    return new Rectangle( (int)x , (int) y +height -(height /15),width,height/15);
}
public Rectangle getBoundsLeft() {
    return new Rectangle( (int) x , (int) y + height /10 ,width/8,height - (height /5));
}
public Rectangle getBoundsRight() {
    return new Rectangle((int)  x + width - (width/8) ,(int) y + height /10 ,width/8,height - height/5);
}
}
My problem is when I add:
else{
    falling =true;
}
during the loop of the ArrayList to check collision, it stops the player from jumping and keeps  him on the ground. I've tried to find a way around this but haven't had any luck. Any suggestions?