gpt4 book ai didi

java - while 循环和方法的问题(无法正确退出循环)

转载 作者:行者123 更新时间:2023-12-01 09:56:07 25 4
gpt4 key购买 nike

我正在编写一个基于文本的小型 Fallout 游戏,但在使用 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

我不知道发生了什么。仅当我在房间里时,它才会让我返回终端方法。我可能会在另一个房间犯一个错误(每个房间都是一个方法,因为它们是独立的),它会说“你不能这样做”。

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

附注这也发生在我的程序的后面部分。整个事情是在玩家生命值大于 0 的情况下运行的,而且我有一个可以让玩家立即杀死的房间。如果玩家进入另一个房间的另一个 while 循环,然后进入 instakill 房间,他们不会被杀死。也许我应该有一个最终游戏方法,我不确定。

谢谢大家,第一次发帖。

最佳答案

应该是

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

关于java - while 循环和方法的问题(无法正确退出循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37201542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com