【发布时间】:2023-03-08 05:35:01
【问题描述】:
您好,我正在尝试使用 java swing timer 以随机间隔生成一个 Person 对象。
我正在使用一个函数生成一个随机泊松数,并且我计划使用该随机生成的数字作为延迟来创建下一个 person 对象。但是,它似乎无法正常工作,因为所有内容的生成时间彼此之间只有约 1 秒,即使泊松值表示 9 秒的间隔。这是我的解决方案尝试:
private ActionListener generatePerson = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
doSomething();
updateTimer();
}
private void doSomething()
{
try {
newPerson = new person(buildingType,currenttime,totnumoffloors);
newPerson.setArrivalTime(timeElapsed);
newPerson.printArrival();
peopleQueue[newPerson.currentFloor-1]++;
floorQueue[newPerson.currentFloor-1]++;
System.out.println("Added a new person to the queue.");
repaint();
System.out.println("Done repainting.");
} catch (IOException ex) {
System.out.println("Unable to create object!");
}
}
private void updateTimer()
{
int lol = 0;
periodicPerson.stop();
newPoissonTime = generatePoisson();
newPoissonTime = (newPoissonTime*1000);
lol = (int)newPoissonTime;
System.out.println("NEW POISSON TIME: " + lol);
periodicPerson.setDelay(lol);
periodicPerson.restart();
}
};
我将泊松时间乘以 1000 以将其转换为秒。
然后我将初始计时器生成为:
periodicPerson = new Timer((int)generatePoisson()*1000, generatePerson);
我认为问题在于当它生成泊松时,它只是将其用作时间间隔,或者延迟根本不起作用。
非常感谢您!
【问题讨论】:
标签: java swing random timer delay