首页 > 解决方案 > 我一直收到关于最终输出的错误

问题描述

我一直得到与我预期不同的输出。但是,代码显然运行正确,提供了所需的输出元素,以及一些额外的冗余元素,如开胃菜和主菜。

请查看附加代码,并在 Eclipse IDE 上运行时输出。







//class FoodOrder
class Main {
// Method to display menu
static void display(String menu[]) {
for (int i = 0; i < menu.length; i++) {
System.out.println("  " + i + " - " + menu[i]);
}
System.out.print("Enter the number for your selection: ");
}

// main method
public static void main(String[] args) {
// menu lists:
String mainMenu[] = { "Nothing", "Appetizer", "Main Course", "Dessert" };
String dessertMenu[] = { "Nothing", "Baklava", "Rice Pudding", "Chocolate Cake" };
String appetizerMenu[] = { "Nothing", "Oysters", "Grilled Octopus", "Hummus" };
String mainCourseMenu[] = { "Nothing", "Steak", "Chicken", "Fish", "Vegetarian" };
String toppingsMenu[] = { "Nothing", "Olive Oil", "Paprika", "Olives" };

String list = "";

// create an instance of Scanner class
Scanner sc = new Scanner(System.in);

boolean valid;

System.out.println("Welcome to the food festival!");

String ans;

do {

System.out.print("Would you like to place an order? ");
ans = sc.next();

valid = ((ans.equals("YES")) || ans.equals("YEs") || ans.equals("Yes") || ans.equals("yES")
|| ans.equals("yeS") || ans.equals("yEs") || ans.equals("YeS") || ans.equals("yes")
|| (ans.equals("NO")) || ans.equals("No") || ans.equals("nO") || ans.equals("no"));

} while (!valid);

if ((ans.equals("NO")) || (ans.equals("No")) || (ans.equals("nO")) || (ans.equals("no"))) {

System.out.println("Thank you for stopping by, maybe next time you’ll sample our menu.");
return;
}

if (ans.equals("YES") || ans.equals("YEs") || ans.equals("Yes") || ans.equals("yES") || ans.equals("yeS")
|| ans.equals("yEs") || ans.equals("YeS") || ans.equals("yes")) {

System.out.print("What is your name for the order? ");
String name = sc.next();

System.out.println("");

int m, n, k;

while (true) {

Menu:

// proocess to select the menu items
System.out.println("Select from menu, " + name);

display(mainMenu);

n = sc.nextInt();
if (n == 0)
break;

if (n == 1) {
while (true) {
System.out.println("");
System.out.println("Appetizer Menu:");
display(appetizerMenu);

m = sc.nextInt();
list = list + "Appetizer:[" + appetizerMenu[m] + ": ";

if (m == 0) {
break;
}

while (true) {

System.out.println("");
System.out.println("Toppings Menu:");
display(toppingsMenu);
k = sc.nextInt();
if (k == 0)
break;
list = list + toppingsMenu[k] + " ";
}

list = list + "]\n";

}

}

if (n == 2) {

while (true) {
System.out.println("");
System.out.println("Main Course Menu:");
display(mainCourseMenu);

m = sc.nextInt();
list = list + "Main Course :[" + mainCourseMenu[m] + ": ";

if (m == 0) {
break;
}

while (true) {

System.out.println("");
System.out.println("Toppings Menu:");
display(toppingsMenu);
k = sc.nextInt();
if (k == 0)
break;
list = list + toppingsMenu[k] + "]\n";
}

}

}

if (n == 3) {

while (true) {
System.out.println("");
System.out.println("Dessert Menu:");
display(dessertMenu);

m = sc.nextInt();
list = list + "Main Course :[" + dessertMenu[m] + ": ";

if (m == 0) {
break;
}

while (true) {

System.out.println("");
System.out.println("Toppings Menu:");
display(toppingsMenu);
k = sc.nextInt();
if (k == 0)
break;
list = list + toppingsMenu[k] + "]\n";
}

}

}

} // end while loop

System.out.println("Here is your order " + name);
System.out.println(list);
System.out.println("Enjoy your meal!");

} // end of if
}// main method
}// end of class




这是我应该得到的输出:

Here is your order Superman:
Appetizer: [ Hummus: Olives, Olive Oil ]
Main Course: [ Fish: Paprika ]
Dessert: [ Baklava: ]
Enjoy your meal!

不幸的是,我得到了这个输出:

Here is your order Superman:
Appetizer:[Hummus: Olives Olive Oil ]
Appetizer:[Nothing: Main Course :[Fish: Paprika]
Main Course :[Nothing: Main Course :[Baklava:
Main Course :[Nothing:
Enjoy your meal!

标签: java

解决方案


我做了一些假设,并进行了实施。您的实现存在一些错误:

  1. 您需要检查列表是否为空以添加“,”
  2. 您首先添加选择,然后检查它是否是退出选项

我认为这可能是您正在寻找的代码:

public static String collectToppings(Scanner sc, String[] toppingsMenu) {
    String list = "";
    while (true) {

        System.out.println("");
        System.out.println("Toppings Menu:");
        display(toppingsMenu);
        int k = sc.nextInt();
        if (k == 0)
            break;

        if (list.length() == 0) {
            list = toppingsMenu[k];
        } else {
            list += ", " + toppingsMenu[k];
        }
    }
    if (list.length() > 0) {
        return list + " ]\r\n\r\n";
    } else {
        return "]\r\n\r\n";
    }
}

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String name = "Superman";
    int m, n;
    String[] mainMenu = new String[] { "Exit", "Appetizer Menu", "Toppings Menu", "Main Course Menu" };

    String[] appetizerMenu = new String[] {"Exit", "Hummus"};
    String[] mainCourseMenu = new String[] {"Exit", "Fish"};
    String[] dessertMenu = new String[] {"Exit", "Baklava"};
    String list ="";

    while (true) {

        // proocess to select the menu items
        System.out.println("Select from menu, " + name);

        display(mainMenu);

        n = sc.nextInt();
        if (n == 0)
            break;

        if (n == 1) {
            while (true) {
                System.out.println("");
                System.out.println("Appetizer Menu:");
                display(appetizerMenu);

                m = sc.nextInt();
                if (m == 0) {
                    break;
                }

                list = list + "Appetizer: [ "  + appetizerMenu[m] + ": ";
                String[] toppingsMenu = new String[] {"Exit", "Olives", "Olive Oil"};
                list += collectToppings(sc, toppingsMenu);
            }

        }

        if (n == 2) {

            while (true) {
                display(mainCourseMenu);

                m = sc.nextInt();
                if (m == 0) {
                    break;
                }

                list = list + "Main Course: [ " + mainCourseMenu[m] + ": ";
                String[] toppingsMenu = new String[] {"Exit", "Paprika"};
                list += collectToppings(sc, toppingsMenu) ;
            }

        }

        if (n == 3) {

            while (true) {
                display(dessertMenu);

                m = sc.nextInt();
                if (m == 0) {
                    break;
                }

                list = list + "Dessert: [ " + dessertMenu[m] + ": ";
                String[] toppingsMenu = new String[] {"Exit", "...", "..."};
                list += collectToppings(sc, toppingsMenu);
            }

        }

    }

    System.out.println("Here is your order " + name + ":\r\n");
    System.out.println(list);
    System.out.println("Enjoy your meal!");

}

private static void display(String[] menu) {
    int i = 0;
    for (String s : menu) {
        System.out.println(i++ + ". " + s);
    }
}

推荐阅读