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工作。正如我前面提到的,我有点累。。不管怎么说,这是有效的!谢谢