java 。有一个在线商店、产品类别、构造函数等。(我有我需要的一切)还有一系列产品。 switch语句提供了一个选择,用户需要在控制台上选择产品的数量。我希望用户能够选择多种产品(不仅是一种产品),所以我添加了扫描仪(我希望扫描仪没有什么不好)我有一种将用户定向到主菜单的方法,在此代码中称为第一个方法(); 通过 switch 语句转换到主菜单的问题。当我按 1、3 等时 - 显示产品,但当我按 6 时,firstMethod(调用该在线商店主菜单的方法)确实有效,但不是“及时”。当我按下 1 时,第 1 个案例被执行,程序正在等待我输入下一个数字。我按 6(转到主菜单),由于某种原因,程序显示案例 2。然后我按 6,控制台显示案例 3,依此类推。再两次,控制台显示主菜单,这正是我想要在按下数字 6 的那一刻显示的内容。 请告诉我 - 那有什么问题?如何使用此运算符进入主菜单(调用方法),还是使用另一个运算符更好?请写出来。
所以我希望 firstMethod 在用户按下数字 6 时起作用。我可以通过交换机执行此操作还是需要其他运算符(operator)?请帮助我将非常感激。
public static void switch1() {
Product[] products = {
new Fridge(),
new Fridge(),
new Fridge(),
... ... ...
};
Scanner scan = new Scanner(System.in);
System.out.println("1 - " + products[0]);
System.out.println("2 - " + products[1]);
System.out.println("3 - " + products[2]);
System.out.println("4 - " + products[3]);
System.out.println("5 - " + products[4]);
System.out.println("6 - Go to main menu");
System.out.println("Which one do u want to buy?");
int i = Scanner.nextInt();
switch (i) {
case 1:
System.out.println(products[0]);
Scanner.nextInt();
case 2:
System.out.println(products[1]);
Scanner.nextInt();
case 3:
System.out.println(products[2]);
Scanner.nextInt();
case 4:
System.out.println(products[3]);
Scanner.nextInt();
case 5:
System.out.println(products[4]);
Scanner.nextInt();
case 6:
firstMethod();
}
最佳答案
似乎唯一可见的问题是每个 case
block 的末尾都没有 break;
语句。
例如:
switch (i) {
case 1:
System.out.println(products[0]);
Scanner.nextInt();
break;
...
此外,仅调用 Scanner.nextInt();
不会执行任何操作,除非您使用调用返回的值。
您还说过您希望用户能够选择多个产品,因此为了做到这一点,您可以将 switch
置于一个循环中,例如 while
循环,让它循环直到满足停止它的条件。
编辑:以下代码显示了您的代码结构的一个小示例:
boolean loop = true;
while (loop) {
int i = scan.nextInt();
switch (i) {
case 1:
System.out.println(product[0]);
break;
//... cases 2-5 are similar to case 1
case 6:
firstMethod();
loop = false;
break;
}
}
关于java - 如何通过 switch 提供在线商店中的产品列表?如何使用退出到主菜单? (或其他方式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54046490/