如何return到另一种情况
How to return to another case
我需要帮助,我有几个案例,我想 return 从一个案例到另一个案例,但它一直 returning 到执行菜单,例如我点击 1 然后 1 和然后 1 和程序 returns 到第一个案例,登录案例,但我想 return 到可视化的
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 循环。因此,如果您需要重新显示第二个选项的选项,您将需要另一个循环。
例如(让你开始。此外,这还没有经过测试,只是为了大致了解将开关选项分成函数。)
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();
op = Login(op, ler);
}
while (op != 0);
}
public static int Login(int op, Scanner ler)
{
switch (op)
{
case 0: // terminate program
return 0;
case 1:
DisplayOptions(ler);
return 1;
}
}
public static int DisplayOptions(Scanner ler)
{
do
{
System.out.println("1: visualize");
System.out.println("2: modify");
... etc...
System.out.println("0: terminate program");
int op = ler.nextInt();
switch (op)
{
case 1:
op = Visualize(ler);
break;
case 2:
op = Modify(ler);
break;
case 0:
System.out.println("Exiting program");
break;
default:
System.out.println("invalid input");
}
}
while (op != 0);
}
public static int Visualize(Scanner ler)
... etc ...
根据using labels in java without "loops"
您可以使用标签来定义要中断的位置。
但是,在紧密嵌套循环之外这样做是非常不正统的。
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);
}
我需要帮助,我有几个案例,我想 return 从一个案例到另一个案例,但它一直 returning 到执行菜单,例如我点击 1 然后 1 和然后 1 和程序 returns 到第一个案例,登录案例,但我想 return 到可视化的
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 循环。因此,如果您需要重新显示第二个选项的选项,您将需要另一个循环。
例如(让你开始。此外,这还没有经过测试,只是为了大致了解将开关选项分成函数。)
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();
op = Login(op, ler);
}
while (op != 0);
}
public static int Login(int op, Scanner ler)
{
switch (op)
{
case 0: // terminate program
return 0;
case 1:
DisplayOptions(ler);
return 1;
}
}
public static int DisplayOptions(Scanner ler)
{
do
{
System.out.println("1: visualize");
System.out.println("2: modify");
... etc...
System.out.println("0: terminate program");
int op = ler.nextInt();
switch (op)
{
case 1:
op = Visualize(ler);
break;
case 2:
op = Modify(ler);
break;
case 0:
System.out.println("Exiting program");
break;
default:
System.out.println("invalid input");
}
}
while (op != 0);
}
public static int Visualize(Scanner ler)
... etc ...
根据using labels in java without "loops"
您可以使用标签来定义要中断的位置。
但是,在紧密嵌套循环之外这样做是非常不正统的。
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);
}