如何从方法重新启动程序

时间:2016-01-17 10:47:20

标签: java loops methods restart

我是Java的初学者,我正在为练习制作基本游戏。我差不多完成了,但我还有一个难以克服的障碍。

我想知道如果在询问是否结束游戏时按作为选择,如何在game()方法上循环游戏。

这是我的代码:

private static void game() //game method
{
    //...

   int play = JOptionPane.showOptionDialog(null
                   ,"End"
                   , "Do you want to play again?"
                   , JOptionPane.PLAIN_MESSAGE
                   ,JOptionPane.DEFAULT_OPTION
                   , null
                   , again
                   , again[1]);
   //end of game

    if (play == 0)
        System.exit(0);//exit
    else
         /* what do I put here to restart the program in the same method(game()) 
            after pressing the No button on the JOptionPane???    */        
         System.out.println("Service not available");  

对于任何可以提供帮助的人,我都非常感谢你!

3 个答案:

答案 0 :(得分:3)

鉴于程序的当前状态,最简单的 最简单大多数直接可读方法是递归。只需再次调用您的游戏方法。请注意,可能存在递归限制,因此循环是推荐的方法,即使它确实涉及重构代码。

else{
    game();
}

循环方法:在开头声明play并使用循环:

private static void game(){
    boolean play = true;
    while (play){
        //...
        //find out if user wants to play again
        //set play to false if player doesn't want to play anymore
    }
}

答案 1 :(得分:2)

JOptionPane功能代码

中提取game()部分
int play=0;
do{
game();
play = JOptionPane.showOptionDialog(null
                   ,"End"
                   , "Do you want to play again?"
                   , JOptionPane.PLAIN_MESSAGE
                   ,JOptionPane.DEFAULT_OPTION
                   , null
                   , again
                   , again[1]); 
}while(play);

答案 2 :(得分:1)

如果你只是想让它成功,你可以这样做:

private static void game()//game method
{
    boolean exit = false;
    while(!exit){
        //...int play = JOptionPane.showOptionDialog(null,"Play Again?", "Do you want to play again?", JOptionPane.PLAIN_MESSAGE,JOptionPane.DEFAULT_OPTION, null, again, again[1]);
       //end of game


        if (play == 0) {
            exit = true;
        }

    }          
        System.exit(0);//exit 

但更好的专业方法是重构代码,因此您可以提取游戏逻辑并将其与用户对话框交互分开。