player does not jump after 2 jumps

I am having a problem to where im trying to make a double jump script. Here is the script

using UnityEngine;
using System.Collections;

public class Movement : MonoBehaviour {

public GameObject Character;
public float jumpSpeed = 5f;
public float Speed = 5f;
public bool canControl;
int jumpCount = 1;

void Update()
{
	if(canControl == true)
	{
		float h = Input.GetAxis("Horizontal") * Speed;
		
		Character.transform.Translate(h*Time.deltaTime,0,0);
	}

	if (Input.GetKeyDown(KeyCode.W) && jumpCount < 3) { 
		Jump ();
		jumpCount += 1;
	}

}

void Jump(){ 
	GetComponent<Rigidbody>().AddForce(Vector3.up * jumpSpeed);	
	
} 

}

You never reset the jumpCount to 0 after you landed. jumpCount will just keep increasing by 1 and you will never jump again.

Just put jumpCount = 0; somewhere you know when you landed.

jumpCount also starts at 1 and not at 0. That means your jumpCount will be 3 after only two jumps and 3 is not less than 3. So, I would also change int jumpCount = 1; to int jumpCount = 0;

you need to reset again your jumpCount = 1; when your character collide with ground.