If you want to do this properly you need to keep using System.currentTimeMillis(), but not in a while loop, for example like this:
import greenfoot.*;
public class Job1 extends Job {
public static final long CUT_TIME_DIF = 1000;
public static final int MAX_CUT = 6;
long lastCutTime = 0l;
int currentCut = 0;
boolean finishedCutting = false;
public void act() {
cut();
remove();
}
public void cut() {
if(!Greenfoot.isKeyDown("c") || finishedCutting) {
lastCutTime = 0l;
return;
}
if(System.currentTimeMillis() > lastCutTime + CUT_TIME_DIF) {
lastCutTime = System.currentTimeMillis();
currentCut++;
setImage("cut" + currentCut + ".png");
if(currentCut = MAX_CUT) finishCutting();
}
}
private finishCutting() {
finishedCutting = true;
getWorld().addObject(new Bed(), 200, 200);
}
public void maybeRemove() {
if(Greenfoot.isKeyDown("x")) getWorld().removeObject(this);
}
}

