Java 如何回到另一个案例
我需要帮助,我有几个案例,我想从一个案例返回到另一个案例,但它一直返回到do菜单,例如,我单击1,然后单击1,然后单击1,程序返回到第一个案例,登录案例,但我想返回到可视化案例Java 如何回到另一个案例,java,case,break,Java,Case,Break,我需要帮助,我有几个案例,我想从一个案例返回到另一个案例,但它一直返回到do菜单,例如,我单击1,然后单击1,然后单击1,程序返回到第一个案例,登录案例,但我想返回到可视化案例 public static void main(String[] args) { int op; Scanner ler = new Scanner(System.in); do { System.out.println("1 - Iniciar s
public static void main(String[] args) {
int op;
Scanner ler = new Scanner(System.in);
do
{
System.out.println("1 - Iniciar sessão");//login
System.out.println("0 - Terminar programa");//end program
System.out.print("OP-> ");
op = ler.nextInt();
switch(op)
{
case 1:
System.out.println("1 - Visualizar lista encomendas realizadas");//visualize
System.out.println("2 - Listar/adicionar/modificar/eliminar produtos");//modifie/remove/add product
System.out.println("3 - Listar/adicionar/modificar/eliminar clientes");//modifie/remove/add client
System.out.println("4 - Listar/adicionar/modificar/eliminar transporte");//modifie/remove/add transportation
System.out.println("5 - Terminar sessão");//end session
System.out.println("0 - Terminar programa");//end program
System.out.println("OP-> ");
op = ler.nextInt();
switch(op)
{
case 1:
System.out.println("1 - Voltar ao menu principal");//return to menu
System.out.println("OP-> ");
op = ler.nextInt();
break;
case 2:
System.out.println("1 - Listar produtos");
System.out.println("2 - Adicionar produtos");
System.out.println("3 - Modificar produtos");
System.out.println("4 - Eliminar produtos");
System.out.println("5 - Voltar");
System.out.println("OP-> ");
op = ler.nextInt();
switch (op)
{
case 1:
break;
case 2:
break;
default: System.out.println("Opção inválida");
}
break;
case 3:
System.out.println("1 - Listar clientes");
System.out.println("2 - Adicionar clientes");
System.out.println("3 - Modificar clientes");
System.out.println("4 - Eliminar clientes");
System.out.println("5 - Voltar");
System.out.println("OP-> ");
op = ler.nextInt();
switch (op)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
default: System.out.println("Opção inválida");
}
break;
case 4:
System.out.println("1 - Listar transporte");
System.out.println("2 - Adicionar transporte");
System.out.println("3 - Modificar transporte");
System.out.println("4 - Eliminar transporte");
System.out.println("5 - Voltar");
System.out.println("OP-> ");
op = ler.nextInt();
switch (op)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
default: System.out.println("Opção inválida");
}
break;
case 5:
break;
default: System.out.println("Opção inválida");
}
break;
default: System.out.println("Opção inválida");
}
}
while(op!=0);
}
}最好将这些switch语句中的每一条语句分离为各自的函数/方法。通过这种方式,您可以为它们指定适当的名称(即,使它们更易于阅读每个开关选项的意图)。代码的这种重新组织还可以让您更好地理解返回时执行路径将指向何处,而不是使用break,它指示从所有开关退出并返回do while循环 同样,以1,1,1为例,会导致一个中断,该中断会退出该切换到另一个中断,该中断会中断到第三个中断,这将使您返回do while循环。因此,如果需要重新显示第二个选项的选项,则需要另一个循环 e、 g.(让您开始。这也不是经过测试的,只是给出了将开关选项划分为函数的大致概念。)
您最好将这些switch语句中的每一个分离为各自的函数/方法。通过这种方式,您可以为它们指定适当的名称(即,使它们更易于阅读每个开关选项的意图)。代码的这种重新组织还可以让您更好地理解返回时执行路径将指向何处,而不是使用break,它指示从所有开关退出并返回do while循环 同样,以1,1,1为例,会导致一个中断,该中断会退出该切换到另一个中断,该中断会中断到第三个中断,这将使您返回do while循环。因此,如果需要重新显示第二个选项的选项,则需要另一个循环 e、 g.(让您开始。这也不是经过测试的,只是给出了将开关选项划分为函数的大致概念。) 依照 可以使用标签定义要打断的位置 然而,在紧密嵌套循环之外这样做是非常不正常的
Scanner ler = new Scanner(System.in);
main:
do {
System.out.println("1 - login");
System.out.println("0 - end program");
System.out.print("OP-> ");
op = ler.nextInt();
switch(op) {
case 1:
menu:
do {
System.out.println("1 - visualise");
System.out.println("2 - modify/remove/add product");
System.out.println("3 - modify/remove/add client");
System.out.println("4 - modify/remove/add transportation");
System.out.println("5 - end session");
System.out.println("0 - end program");
System.out.println("OP-> ");
op = ler.nextInt();
switch(op)
{
case 1:
do{
System.out.println("1 - return to menu");
System.out.println("OP-> ");
op = ler.nextInt();
} while(op!=1)
break menu;
//SNIP
}
while(true)
依照
可以使用标签定义要打断的位置
然而,在紧密嵌套循环之外这样做是非常不正常的
Scanner ler = new Scanner(System.in);
main:
do {
System.out.println("1 - login");
System.out.println("0 - end program");
System.out.print("OP-> ");
op = ler.nextInt();
switch(op) {
case 1:
menu:
do {
System.out.println("1 - visualise");
System.out.println("2 - modify/remove/add product");
System.out.println("3 - modify/remove/add client");
System.out.println("4 - modify/remove/add transportation");
System.out.println("5 - end session");
System.out.println("0 - end program");
System.out.println("OP-> ");
op = ler.nextInt();
switch(op)
{
case 1:
do{
System.out.println("1 - return to menu");
System.out.println("OP-> ");
op = ler.nextInt();
} while(op!=1)
break menu;
//SNIP
}
while(true)
下面是一个如何将菜单拆分为方法并在正确位置调用它们的示例。请注意,每个菜单都包含一个循环。您的
op
变量在所有菜单上都是相同的,这使得它们不能正常工作
static Scanner ler;
public static void menuClientes(){
int op= 0;
while (op!= 5){
System.out.println("1 - Listar clientes");
System.out.println("2 - Adicionar clientes");
System.out.println("3 - Modificar clientes");
System.out.println("4 - Eliminar clientes");
System.out.println("5 - Voltar");
System.out.println("OP-> ");
op = ler.nextInt();
switch (op) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
default:
System.out.println("Opção inválida");
}
}
}
public static void menuTransporte(){
int op= 0;
while (op!= 5){
System.out.println("1 - Listar transporte");
System.out.println("2 - Adicionar transporte");
System.out.println("3 - Modificar transporte");
System.out.println("4 - Eliminar transporte");
System.out.println("5 - Voltar");
System.out.println("OP-> ");
op = ler.nextInt();
switch (op) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
default:
System.out.println("Opção inválida");
}
}
}
public static void menuPrincipal(){
int op= 0;
while (op!= 5){
System.out.println("1 - Visualizar lista encomendas realizadas");// visualize
System.out.println("2 - Listar/adicionar/modificar/eliminar produtos");
System.out.println("3 - Listar/adicionar/modificar/eliminar clientes");
System.out.println("4 - Listar/adicionar/modificar/eliminar transporte");
System.out.println("5 - Terminar sessão");
System.out.println("0 - Terminar programa");
System.out.println("OP-> ");
op = ler.nextInt();
switch (op) {
case 1:break;
case 2:break;
case 3: menuClientes();break;
case 4: menuTransporte(); break;
case 5: return;
default:
System.out.println("Opção inválida");
}
}
}
public static void main(String[] args) {
int op;
ler = new Scanner(System.in); //the declarion of this variable was put on the class itself to be accessible by all methods
do {
System.out.println("1 - Iniciar sessão");// login
System.out.println("0 - Terminar programa");
System.out.print("OP-> ");
op = ler.nextInt();
switch (op) {
case 1: menuPrincipal();break;
default:
System.out.println("Opção inválida");
}
} while (op != 0);
}
下面是一个如何将菜单拆分为方法并在正确位置调用它们的示例。请注意,每个菜单都包含一个循环。您的
op
变量在所有菜单上都是相同的,这使得它们不能正常工作
static Scanner ler;
public static void menuClientes(){
int op= 0;
while (op!= 5){
System.out.println("1 - Listar clientes");
System.out.println("2 - Adicionar clientes");
System.out.println("3 - Modificar clientes");
System.out.println("4 - Eliminar clientes");
System.out.println("5 - Voltar");
System.out.println("OP-> ");
op = ler.nextInt();
switch (op) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
default:
System.out.println("Opção inválida");
}
}
}
public static void menuTransporte(){
int op= 0;
while (op!= 5){
System.out.println("1 - Listar transporte");
System.out.println("2 - Adicionar transporte");
System.out.println("3 - Modificar transporte");
System.out.println("4 - Eliminar transporte");
System.out.println("5 - Voltar");
System.out.println("OP-> ");
op = ler.nextInt();
switch (op) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
default:
System.out.println("Opção inválida");
}
}
}
public static void menuPrincipal(){
int op= 0;
while (op!= 5){
System.out.println("1 - Visualizar lista encomendas realizadas");// visualize
System.out.println("2 - Listar/adicionar/modificar/eliminar produtos");
System.out.println("3 - Listar/adicionar/modificar/eliminar clientes");
System.out.println("4 - Listar/adicionar/modificar/eliminar transporte");
System.out.println("5 - Terminar sessão");
System.out.println("0 - Terminar programa");
System.out.println("OP-> ");
op = ler.nextInt();
switch (op) {
case 1:break;
case 2:break;
case 3: menuClientes();break;
case 4: menuTransporte(); break;
case 5: return;
default:
System.out.println("Opção inválida");
}
}
}
public static void main(String[] args) {
int op;
ler = new Scanner(System.in); //the declarion of this variable was put on the class itself to be accessible by all methods
do {
System.out.println("1 - Iniciar sessão");// login
System.out.println("0 - Terminar programa");
System.out.print("OP-> ");
op = ler.nextInt();
switch (op) {
case 1: menuPrincipal();break;
default:
System.out.println("Opção inválida");
}
} while (op != 0);
}
开关里面有开关里面有开关吗?请重新考虑你的设计。即使你现在让它工作,它以后肯定会坏的。你有开关里面的开关里面的开关?请重新考虑你的设计。即使你现在让它工作,它以后肯定会断开。是的,我不想退出所有的开关,我能用它不断开什么?它看起来很糟糕,但是在你显示的选项周围的另一个循环和执行所选选项的开关可能会这样做。但是我将处于无限循环开关(op)中{案例1:System.out.println(“1-Voltar ao菜单主体”);System.out.println(“OP->”);OP=ler.nextInt();开关(OP){案例1:返回;}你不应该这样。你可以随时中断,或测试op值。是的,我不想退出所有开关,我可以使用它不中断吗?它看起来很糟糕,但是在你显示的选项周围的另一个循环和执行所选选项的开关可能会这样做。但是我将处于无限循环开关(op)中{案例1:System.out.println(“1-Voltar ao菜单主体”);System.out.println(“OP->”);OP=ler.nextInt();开关(OP){case 1:return;}您不应该这样做。您可以随时中断或测试op值。如果不工作,它仍然会返回到System.out.println(“1-Iniciar sessão”);//login System.out.println(“0-Terminar programa”);//结束程序您可能需要调整标签以满足您的用例,我不是100%理解您想要的程序流。如果不工作,它仍然返回到System.out.println(“1-Iniciar sessão”);//login System.out.println(“0-Terminar programa”);//结束程序您可能需要调整标签以满足您的用例,我不完全理解您想要的程序流。