It's customary in cases like this to ask: what does "does not work" mean?
It's not that I mean to be smart or deliberately obtuse, but you are trying to hunt down a bug and you'll need to be sharp. Precisely describing the problem is one way to sharpen your mind.
Anyway you can get a better idea of what is going on (and be able to better describe it) by adding some debugging output so you can see what the computer sees:
while (name.compareTo("stop") != 0 )
{
System.out.print( "Enter the employee's wage: " );
wage = input.nextDouble();
System.out.print( "Enter the number of hours worked: " );
hours = input.nextInt();
pay = wage * hours;
System.out.printf( "\n\nName: %s\nWage: $%.2f\nHours worked: %d\nPay: $%.2f\n", name, wage, hours, pay );
System.out.print( "Enter the employee's name: " );
name = input.nextLine();
System.out.println("The name read from the input stream was -->" + name + "<--");
}