如何在Java中添加退出开关盒的选项
我正在使用SwitchCase用java创建一个基于菜单的程序。 以下是4个案例:如何在Java中添加退出开关盒的选项,java,Java,我正在使用SwitchCase用java创建一个基于菜单的程序。 以下是4个案例: 添加记录 删除记录 更新记录 出口 我在每个案例之后都添加了break,但是,我想做的是在用户输入案例4时终止程序,那么在这种情况下该怎么办呢?如果您想直接退出,请返回或退出System.exit(ExitCode)。您可以使用System.exit()实现此目的 系统退出(int状态) 终止当前运行的Java虚拟机 在第4种情况下,添加: System.exit(int status); 通常,status>
我在每个案例之后都添加了break,但是,我想做的是在用户输入案例4时终止程序,那么在这种情况下该怎么办呢?如果您想直接退出,请返回或退出System.exit(ExitCode)。您可以使用
System.exit()
实现此目的
系统退出(int状态)
终止当前运行的Java虚拟机
在第4种情况下,添加:
System.exit(int status);
通常,status>=0
表示程序正确终止,status<0
表示异常终止。我认为你应该使用:
System.exit(0);
状态
用作错误代码。您可以指定任何您想要的值。如果您的程序包含多个退出点,则可以为其分配不同的错误代码。您可以将错误代码返回给调用应用程序的环境。通过此错误代码,您可以跟踪是哪个System.exit()导致程序终止。您的switch
语句中的特定案例将是:
case 4: System.exit(0);
请不要使用系统。退出。这就像用链锯切西红柿一样。这是一个钝的工具,可能在紧急情况下有用,但在正常情况下,如您试图编写
有两种更好的方法:(1)如果将循环放在一个方法中,该方法的唯一目的是读取用户的输入并执行所需的功能,则可以从该方法返回:
private static void mainMenu() {
while(true) {
char option = getOptionFromUser();
switch(option) {
case '1':
addRecord();
break;
case '2':
deleteRecord();
break;
case '3':
updateRecord();
break;
case '4':
return;
}
}
}
现在,无论程序调用什么main menu()
都有机会进行一些清理,打印一条“再见”消息,在退出之前询问用户是否要备份文件,等等。使用System.exit
,您无法做到这一点
除了返回
,另一种机制是使用中断
退出循环。由于中断
也会中断开关
,因此需要一个循环标签:
private static void mainMenu() {
menuLoop:
while(true) {
char option = getOptionFromUser();
switch(option) {
... as above
case '4':
break menuLoop;
}
}
... will go here when user types '4', you can do other stuff if desired
}
或者(正如Riddhesh Sanghvi所建议的那样),您可以在while
循环中设置一个条件,而不是中断它。他的回答使用了基于选项的条件
;我经常使用的另一个习惯用法是设置一个boolean
,目的是:
private static void mainMenu() {
boolean askForAnother = true;
while(askForAnother) {
char option = getOptionFromUser();
switch(option) {
... as above
case '4':
askForAnother = false;
}
}
... will go here when user types '4', you can do other stuff if desired
}
或:
因此,您有很多选项,都比系统好。如果您不想选择返回或系统,请退出。退出(ExitCode)
,然后将终止条件放入while循环,如下所示。
为什么要将while(true)
,然后将返回
或系统。退出,而不是退出利用while循环的布尔检查退出它。
private static void mainMenu() {
int option=0;//initializing it so that it enters the while loop for the 1st time
while(option!=4){
option = getOptionFromUser();
switch(option) {
case 1:
addRecord();
break;
case 2:
deleteRecord();
break;
case 3:
updateRecord();
break;
case 4:
System.out.print("While Loop Terminated");
break;
}
}
// when user enters 4,
//Will execute stuff(here the print statement) of case 4 & then
//... will come here you can do other stuff if desired
}
无论何时,当您想退出交换机时,最好使用do while循环,因为如果用户希望更新、删除或添加程序中的多个记录,则可以再次运行程序
class record{
public static void main(String args[]){
do
{
System.out.Println("Enter Choice ");
Scanner sc = new Scanner(System.in);
int choice = sc.nextInt();
switch(option){
case 1:{
//Code for Adding the Records
break;
}
case 2:{
//Code for deleting the Records
break;
}
case 3:{
//Code for Updating the Records
break;
}
case 4:{
break;
}
}
}
while(choice!=4);
}
}
无论您想在何处添加用于添加、删除和更新记录的代码,您都可以调用在交换机外壳外部定义的方法,并且程序应该可以正常运行float ans
switch(operator)
{
case '+':
ans = no1 + no2;
break;
case '-':
ans = no1 - no2;
break;
case '*':
ans = no1 * no2;
break;
case '/':
ans = no1 / no2;
break;
case '0':
System.exit(0);
default:
System.out.printf("EERRRoOOOORRR(^!^)");
return;
}
但此处的状态是什么?您可以定义自己的状态,例如,您可以传递-1
并假设这是一个错误,或者在一切正常时传递0
。状态只是一个帮助您的变量,您可以在几种情况下结束程序(例如错误),使用此状态变量您可以确定自己的错误代码。或者你根本不能传递任何状态。这都是你的事。@AbhijitKumbhar请不要使用系统。为此退出。我很震惊有这么多的答案推荐它。@Solver你答对了。为什么否决票我问错了什么?我认为否决票的原因可能是:一般来说,StackOverflow更喜欢那些表明提问者试图自己解决问题、遇到问题或陷入困境的问题,而不是那些看起来像发问者只是想让别人为他们做工作的问题。你的问题有点牵强,可以采取任何一种方式。下一次,尝试自己编写代码,直到卡住为止,然后发布您尝试过的代码。您获得否决票的可能性会小得多。@AbhijitKumbhar请不要使用系统。为此退出。我很震惊,有这么多的答案推荐它。是的,我看到了你的答案,似乎更有效。我将确保在编写下一个实验作业时使用return
。谢谢。@Mr.Robot您也可以利用while循环的条件来达到同样的效果。如果您希望避免添加额外的return
或System.exit
@ridheshsanghvi Yes,这将是最简单的方法。@AbhijitKumbhar请不要为此使用System.exit
。我很震惊,有这么多答案推荐它。@AbhijitKumbhar请不要为此使用系统。退出。我很震惊有这么多的答案推荐它。还有一种方法没有使用返回
或中断
或系统。退出
将使用while循环的条件。@ridheshsanghvi谢谢,我已经编辑了我的答案,以包括一些其他选项。
switch(operator)
{
case '+':
ans = no1 + no2;
break;
case '-':
ans = no1 - no2;
break;
case '*':
ans = no1 * no2;
break;
case '/':
ans = no1 / no2;
break;
case '0':
System.exit(0);
default:
System.out.printf("EERRRoOOOORRR(^!^)");
return;
}