Logic 我的程序有一个逻辑错误。有人能看出哪里出了问题吗?
下面的列表应该是我的计划的结果。尽管如此,我还是得到了《荷马开门》。我不知道我是否盯着错误看。我研究代码已经有一段时间了,困了肯定没用。感谢您的帮助Logic 我的程序有一个逻辑错误。有人能看出哪里出了问题吗?,logic,Logic,下面的列表应该是我的计划的结果。尽管如此,我还是得到了《荷马开门》。我不知道我是否盯着错误看。我研究代码已经有一段时间了,困了肯定没用。感谢您的帮助 //巴特锁上门 //荷马试着开门,但打不开,因为门锁着 //荷马开门 //荷马打开了门 //巴特试着开门,但打不开,因为门已经开了 //玛姬关上门 //荷马试图把门关上,但是关不上,因为门已经关上了 关闭 //丽莎开门 //亚伯拉罕试图锁上门,但锁不上,因为门是开着的 //玛姬关上门 //亚伯拉罕锁上门 //巴特试图开门,但打不开,因为门锁着 //
//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;
}
}
}
您没有指定语言或完整的程序,但问题似乎是每个人(实际上)都有自己的门,独立于其他人的门,因为每个人都有自己的锁定/打开标志来跟踪他们的门
如果你想只有一扇门,你需要让所有人共享一个单独的上锁和打开的标志。根据您使用的语言,您可以通过使标志
为静态
来实现这一点。或者,您可以将它们放在一个单独的“door”对象中,让所有的“people”对象引用该“door”my bad,我在用java工作。正如我前面提到的,我有点累。。不管怎么说,这是有效的!谢谢