下面的列表应该是我的程序的结果。虽然,对于#2我得到“荷马开门”。我不知道我是否盯着错误。我已经研究了一段时间的代码而且困了肯定没有帮助。任何帮助表示赞赏!
// Marge关上门。
//in a separate method:
bart.lockDoor();
homer.openDoor();
homer.unlockDoor();
homer.openDoor();
bart.openDoor();
marge.closeDoor();
homer.closeDoor();
lisa.openDoor();
abraham.unlockDoor();
marge.closeDoor();
abraham.lockDoor();
bart.openDoor();
lisa.openDoor();
homer.openDoor();
abraham.unlockDoor();
homer.openDoor();
marge.closeDoor();
boolean locked;
boolean open;
public void lockDoor()
{
if(locked == true)
out.println( name + " tries to lock the door, but can't because its already locked.");
else
if(open == false)
{
locked = true;
out.println( name + " locks the door.");
}
}
public void unlockDoor()
{
if(open == true)
out.println( name + " tries to unlock the door, but can't because its open.");
else
if(locked == false)
out.println( name + " tries to unlock the door, but can't because its already unlocked.");
else
if(locked == true)
{
out.println( name + " unlocks the door.");
locked = false;
}
}
public void openDoor()
{
if(open == true)
out.println( name + " tries to open the door, but can't because its already open.");
else
if( locked == true )
out.println( name + " tries to open the door, but can't because its locked.");
else
if(locked == false)
{
out.println( name + " opened the door.");
open = true;
}
}
public void closeDoor()
{
if(open == false)
out.println( name + " tries to close the door, but can't because its already closed.");
else
{
if(open == true)
{
out.println( name + " closed the door.");
open = false;
}
}
}
答案 0 :(得分:1)
你没有指定语言或完整的程序,但看起来问题是每个人都有(有效地)自己的门,独立于每个人的门,因为每个人都有自己的锁定/打开标志跟踪他们的门。
如果你想只有一扇门,你需要让所有人共享一个锁定和单开的旗帜。根据您使用的语言,您可以通过制作标记static
来实现此目的。或者,您可以将它们放在一个单独的“门”对象中,让所有“人”对象引用“门”