如何从同一个类中的另一个方法返回主方法(中断无效)

时间:2018-10-11 16:59:25

标签: java

因此,我还看到了许多其他相关文章,但是由于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()的位置之后返回主目录。

2 个答案:

答案 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最终将其返回。