如何从方法中重新启动程序
How to restart a program from a method
我是 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");
任何能提供帮助的人,我非常感谢你!
鉴于程序的当前状态,最简单 最简单 最直接 可读方法是递归。只需再次调用您的游戏方法即可。请注意,可能存在递归限制,因此循环是推荐的方法,即使它确实需要稍微重构您的代码。
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
}
}
如果你只是想让它工作,你可以这样做:
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
但更好更专业的方法是重构您的代码,因此您提取游戏逻辑并将其与用户对话交互分开。
从您的 game()
函数代码中提取 JOptionPane
部分
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);
我是 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");
任何能提供帮助的人,我非常感谢你!
鉴于程序的当前状态,最简单 最简单 最直接 可读方法是递归。只需再次调用您的游戏方法即可。请注意,可能存在递归限制,因此循环是推荐的方法,即使它确实需要稍微重构您的代码。
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
}
}
如果你只是想让它工作,你可以这样做:
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
但更好更专业的方法是重构您的代码,因此您提取游戏逻辑并将其与用户对话交互分开。
从您的 game()
函数代码中提取 JOptionPane
部分
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);