重新启动java控制台应用程序代码

重新启动java控制台应用程序代码,java,console,restart,relaunch,Java,Console,Restart,Relaunch,我在互联网上搜索了几个小时,却找不到适合我的正确答案 所以。。我做了一个叫做“海战”的游戏 在玩了那个游戏之后,游戏机上出现了一个问题,需要再次玩 System.out.println("Well done! " + whosturn.getName() + ". A ship down!" ); System.out.println("Hurraaaaaayyyyy, All boats down!!");

我在互联网上搜索了几个小时,却找不到适合我的正确答案

所以。。我做了一个叫做“海战”的游戏 在玩了那个游戏之后,游戏机上出现了一个问题,需要再次玩

System.out.println("Well done! " + whosturn.getName() + ". A ship down!" );
                        System.out.println("Hurraaaaaayyyyy, All boats down!!");
                        System.out.println("Do you want to play this game again? (y/n) ");
                        input = scanner.next().toLowerCase();
                        if(input == "y"){
                            System.out.println("The game should start again now..");
                            System.out.println("Butttttttt, I don't know how to...");
                        }

                        else{
                            System.out.println("Thank you for player Battleships!");
                            System.out.println("See you next time ;)");
                        }
                    }
                    else{
                        FiredPosition.setDisplayValue('*');
                        System.out.println("Good job, you hit a ship!");
                        switchTurn();
                    }
如果用户在控制台中键入y。比赛应该重新开始

我读了一些关于Mainargs之类的东西。。这对我不起作用,因为这是另一门课

我希望你们能帮我


Ciaoo

如果您的主级海战当前为:

public class SeaBattle {
 public static void main(String[] args) {
   ...
 }
}
您可以通过以下方式进行更改:

public class SeaBattle {
 private static String[] args;
 public static void run() {
   //do the same than main() previously
 }
 public static void main(String[] args) {
   SeaBattle.args = args;
   run();
 }
}
然后重新启动游戏

SeaBattle.run();

一个简单的答案是:无论你首先做什么来开始游戏,当你检测到“y”时再做一次

然而,更深入的回答涉及到使用对象来存储和更新游戏状态,从您的描述中不完全清楚您当前是否正在这样做。因此,如果是战列舰类型的游戏,对象可能包含游戏区域的2d数组,可能还包含一个变量来存储轮到谁。这个对象将有一个“初始化”方法,你可以随机选择船只在游戏区域的位置,设置轮到谁的值,等等


您的主方法将与此对象交互,因此它将调用游戏对象的初始化方法,并在每次回合后调用另一个方法,例如“isGameFinished”,以检查游戏是否结束。isGameFinished方法将检查是否所有船只都已销毁,如果已销毁,则返回true。如果返回true,则会提示用户选择新游戏。如果他们输入“y”,那么您可以创建游戏状态的全新对象,或者再次调用游戏状态的初始化方法。然后,您将有一个新的游戏状态来开始一个新游戏。

为您的游戏类创建一个新对象并重新开始不是更简单吗?而不是通过发送命令行参数来重新启动进程?