while循环和方法的问题(不能正确退出循环)

时间:2016-05-13 04:55:52

标签: java loops while-loop

我正在编写一个小型的基于文本的游戏,我遇到了while循环问题。

第二次获取输入的主要方法是将它们发送回方法的开头(起始保险库中的每个房间都是一种方法,如下所示:

    public static void elseoverseeroffice()
    {            
        command = in.nextLine();

        if (command.equals("look around") || command.equals("l") || command.equals("look"))
         {
            overseeroffice();
         }  

这是我正在做的一个小例子。

我有它,以便当玩家检查终端时,它进入终端循环:( while循环在底部,另一个文本在那里用于上下文.delay();只是延迟打印输出为了很酷的效果)

    public static void overseerterminal()
    {
                delay();
                  System.out.println("================================================");
                  delay();
                  System.out.println("=        VAULT 9 OVERSEER TERMINAL             =");
                  delay();
                  System.out.println("================================================");
                  delay();
                System.out.println("\n   > VAULT 9 OVERSEER INSTRUCTIONS");
                  delay();
                  if(elevator_sys==false)
                    {System.out.println("   > ACTIVATE ELEVATOR SYSTEM");}
                  else
                    {System.out.println("   > DEACTIVATE ELEVATOR SYSTEM");}
                  delay();
                  if(saferevealed==false)
                    {System.out.println("   > REVEAL SAFE");}
                  else
                    {System.out.println("   > HIDE SAFE");}
                  System.out.println("   > EXIT");
                  delay();
                  delay();
                System.out.println("\n  TYPE YOUR SELECTION");

               while (!command.equals("vault 9 Overseer Instructions") || !command.equals("VAULT 9 OVERSEER INSTRUCTIONS") || !command.equals("ACTIVATE ELEVATOR SYSTEM") || !command.equals("activate elevator system") || !command.equals("REVEAL SAFE") || !command.equals("reveal safe") || command.equals("exit") )
               {
                       command = in.nextLine();

我在终端中有很多选项,所有选项都循环回终端。您可以输入此终端的最后一个命令是

                    else if (command.equals("exit") )
                    {
                        System.out.println("You shut down the terminal.");
                        elseoverseeroffice();
                        break;
                    }

我在那里休息以停止循环,但如果它在监督办公室之前,它不会运行,如果我有休息,那么elseoverseeroffice();在while循环之外,如果我在房间中键入一个不是有效的命令,它会将播放器放回终端循环中。

以下是命令行中的一些复制和粘贴文本:

You press a button on the terminal, and it springs to life, displaying the     need to input a password.
Type the password.
excalibur
================================================
=        VAULT 9 OVERSEER TERMINAL             =
================================================

> VAULT 9 OVERSEER INSTRUCTIONS
> ACTIVATE ELEVATOR SYSTEM
> REVEAL SAFE
> EXIT

TYPE YOUR SELECTION
exit
You shut down the terminal.
look around

**Overseer's Office**
This small important looking room is lit by a circular light.


A central round desk sits in the middle of the room.

There is an entrance to your east.
what
what
INVALID COMMAND
I am back in the terminal
INVALID COMMAND
exit
You shut down the terminal.
see

我不知道发生了什么。只有当我在房间里时,它才会让我回到终端方法。我可以在另一个房间里犯错误(每个房间都是一种方法,因为它们是个人的),它会说"你不能这样做"。

有任何帮助吗?我知道这很长,但如果您需要更多代码,请告诉我什么,我会评论它。我不想上传整个程序。

P.S 这也发生在我的程序的后期部分。整个事情在玩家健康状况大于0时运行,并且我有一个对玩家来说非常苛刻的房间。 如果玩家在另一个房间进入另一个循环,然后进入instakill房间,他们就不会被杀死。也许我应该有导致最终游戏方法,我不确定。

谢谢大家,先来这里发帖。

1 个答案:

答案 0 :(得分:1)

应该是

while ((!command.equalsIgnoreCase("vault 9 Overseer Instructions") && 
  !command.equalsIgnoreCase("activate elevator system") && 
  !command.equalsIgnoreCase("reveal safe")) || command.equalsIgnoreCase("exit") )