因此,我还看到了许多其他相关文章,但是由于a)我试图在main内部跳过while循环时试图返回main方法,所以这些帖子均未应用。我正在制作一个文字冒险游戏,它通过逐步从最后一步中调用下一步来按步骤(单独的方法)工作。例如,第一步是EastStoryline1()
,第二步是EastStoryline2()
,在EastStoryline1()
的代码末尾,它显示为"EastStoryline2()"
。
所以实际的main很小,因为它只是循环到下一个的一种方法。主循环中还有2个while循环。首先是在我建立了扫描程序和布尔值再次播放之后,基本上围绕了主要播放器的其余部分,而playagain = true则开始了游戏。第二个循环紧接在第一个循环之后,基本上说def(玩家健康)> 0时,玩游戏的事件。在第二个循环之后,但仍在第一个循环中,该代码调用方法Die()
,然后询问玩家是否要玩游戏。
因此,基本上,我要在Die()
里面放入什么代码,以便脱离任何现有的循环链,并在主要调用Die()
之后将其带入下一个代码。问题是我在其他方法中也使用了Die()
,每次调用它时,我都希望它返回到主Die()
之后的代码。这是主要代码(格式不好,很抱歉):
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
boolean playagain = true;
while(playagain == true)
{
while(def > 0)
{
TitleScreen("TXT ADVENTURE!");
System.out.println("Pick a character: Rogue, Paladin, or Priest
(capitals DO matter!)");
String character = keyboard.next();
CharacterChoice(character);
System.out.println("You wake up on a dusty road, with no memory of who
you are or how you got here. You can only remember your name, and how to
fight. To the east lies a small dock with a boat. To the west, there seems
to be a sand-scarred mountain range. Do you go east, or west?");
String ew = keyboard.next();
EastWest(ew);
}
Die();
System.out.println("Do you want to play again?");
String playornah = keyboard.next();
if(playornah.equals("yes") || playornah.equals("Yes"))
{
playagain = true;
}
else
{
playagain = false;
}
}
}
这是我使用system.exit(0)
的Die的代码,但是现在我希望在Die被调用在那里之后,而不是仅仅结束程序之后,返回到主代码):
public static void Die()
{
System.out.println("GAME OVER");
System.exit(0); //I tried using break but it wouldn't compile
}
所以我要在Die()
中编写什么代码,以便(无论在何处调用)在调用Die()
的位置之后返回主目录。
答案 0 :(得分:2)
public static void Die()
{
System.out.println("GAME OVER");
System.exit(0); //I tried using break but it wouldn't compile
}
System.exit(0);
结束程序。如果您只想结束该方法,则:
让该方法在没有更多语句时自然结束。 (只需删除System.exit(0);
)
用System.exit(0);
语句替换return;
来自docs:
方法返回到调用该方法的代码
- 完成方法中的所有语句,
- 到达返回声明,或者
- 引发异常(稍后会发现)
以先出现的为准。
答案 1 :(得分:0)
您不能从外部方法返回,一旦运行代码,您将如何使用try-finally最终将其返回。