I "cleaned" your code a little bit and changed the Array to check duplicate random numbers to an ArrayList. It's not the fastest solution, but it should work.
The problem is that you don't get out of the for loop until the whole program exits. As geoand described above, RandInt == NA[k] will never be true, because RandInt will always be <= 19, so no new random number will be generated. So there are two wrong things in the code.
When you want to learn more about faster checking for duplicate entries, maybe this will help you: http://javarevisited.blogspot.de/2012/02/how-to-check-or-detect-duplicate.html
I hope I could help you. :)
static String[] places = {"Man Utd", "Arsenal", "Aston Villa", "Chelsea",
"Everton", "Fulham", "Liverpool", "Man City", "Newcastle", "Norwich",
"QPR", "Reading", "Southampton", "Stoke", "Sunderland", "Swansea",
"Spurs", "West Brom", "West ham", "Wigan"};
static int[] NA = new ArrayList<Integer>(5);
static Random rand = new Random();
static int RandInt = 0;
static int player = 1;
public static void main(String[] args) {
while (player < 5) {
RandInt = rand.nextInt(places.length);
for (int i = 0; i <= NA.size(); i++) {
if (RandInt == NA.get(i)) {
RandInt = rand.nextInt(places.length);
} else {
NA.add(RandInt);
break;
}
}
System.out.println("player " + player + " is managing " + places[RandInt]);
player++;
}
System.exit(0);
}