Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的if input.equals(“退出”)没有正确退出? public void addPizza()引发FileNotFoundException{ 菜单=新菜单(); 映射pizzaMenu=menu.getPizzaMenu(); 布尔退出=假; 当(!退出){ 字符串输入1; 字符串输入2; System.out.println(“什么比萨饼”); input1=sc.nextLine(); System.out.println(“多少比萨饼”); input2=sc.nextLine(); 如果(输入1.equals(“退出”)| |输入1.equals(“退出”)| |输入2.equals(“退出”)| |输入2.equals(“退出”)){ 退出=真; }否则{ 比萨饼=比萨饼菜单.get(Integer.parseInt(input1)); 整数数量=整数.parseInt(input2); OrderLineItem orderLine=新的OrderLineItem(比萨饼,数量,“”); 添加(订单行);_Java - Fatal编程技术网

Java 为什么我的if input.equals(“退出”)没有正确退出? public void addPizza()引发FileNotFoundException{ 菜单=新菜单(); 映射pizzaMenu=menu.getPizzaMenu(); 布尔退出=假; 当(!退出){ 字符串输入1; 字符串输入2; System.out.println(“什么比萨饼”); input1=sc.nextLine(); System.out.println(“多少比萨饼”); input2=sc.nextLine(); 如果(输入1.equals(“退出”)| |输入1.equals(“退出”)| |输入2.equals(“退出”)| |输入2.equals(“退出”)){ 退出=真; }否则{ 比萨饼=比萨饼菜单.get(Integer.parseInt(input1)); 整数数量=整数.parseInt(input2); OrderLineItem orderLine=新的OrderLineItem(比萨饼,数量,“”); 添加(订单行);

Java 为什么我的if input.equals(“退出”)没有正确退出? public void addPizza()引发FileNotFoundException{ 菜单=新菜单(); 映射pizzaMenu=menu.getPizzaMenu(); 布尔退出=假; 当(!退出){ 字符串输入1; 字符串输入2; System.out.println(“什么比萨饼”); input1=sc.nextLine(); System.out.println(“多少比萨饼”); input2=sc.nextLine(); 如果(输入1.equals(“退出”)| |输入1.equals(“退出”)| |输入2.equals(“退出”)| |输入2.equals(“退出”)){ 退出=真; }否则{ 比萨饼=比萨饼菜单.get(Integer.parseInt(input1)); 整数数量=整数.parseInt(input2); OrderLineItem orderLine=新的OrderLineItem(比萨饼,数量,“”); 添加(订单行);,java,Java,您好。我已经得到了上面的代码,但是我的循环将无法正确退出。 现在,它将询问您“什么比萨饼”->input Quit->“多少比萨饼”->input Quit。 这个想法是,在输入Quit一次后,它就退出了循环,不管是在What pizza还是多少pizza中 在我看来,它应该在一次“退出”后退出,因为if语句应该将布尔值设置为true? 希望有人能帮忙 当然,它的行为是这样的。如果要检查输入“quit”,则在第二个问题之后 要使该程序表现得像您所希望的那样,最简单的更改是在第一个问题之后再次执行

您好。我已经得到了上面的代码,但是我的循环将无法正确退出。 现在,它将询问您“什么比萨饼”->input Quit->“多少比萨饼”->input Quit。 这个想法是,在输入Quit一次后,它就退出了循环,不管是在What pizza还是多少pizza中

在我看来,它应该在一次“退出”后退出,因为if语句应该将布尔值设置为true? 希望有人能帮忙


当然,它的行为是这样的。如果要检查输入“quit”,则在第二个问题之后

要使该程序表现得像您所希望的那样,最简单的更改是在第一个问题之后再次执行相同的退出检查,然后使用break语句代替exit标志。 while可以是“while(true)”

简而言之,它看起来是这样的:

public void addPizza() throws FileNotFoundException {
    Menu menu = new Menu();
    Map<Integer, Pizza> pizzaMenu = menu.getPizzaMenu();

    boolean exit = false;

    while (!exit) {
        String input1;
        String input2;

        System.out.println("What pizza");
        input1 = sc.nextLine();

        System.out.println("How many pizzas");
        input2 = sc.nextLine();

        if (input1.equals("Quit") || input1.equals("quit") || input2.equals("Quit") || input2.equals("quit")) {
                exit = true;
        } else {
            Pizza pizza = pizzaMenu.get(Integer.parseInt(input1));
            Integer quantity = Integer.parseInt(input2);

            OrderLineItem orderLine = new OrderLineItem(pizza,quantity,"");

            listOfOrderLineItems.add(orderLine);

而不是更改变量的值

while (true) {
    String input1 = readline("What pizza");
    if (isQuit(input1)) {
        break;
    }
    String input2 = readLine("How many pizzas");
    if (isQuit(input2)) {
        break;
    }
    // do your stuff
}
你可以使用

exit

命令并保持while循环运行直到中断。

可能其他地方还有另一个循环,因此会重复调用
addPizza()
。另请参见:建议:使用
input1.equals(“退出”)| | input1.equals(“退出”)
,而不是
input1.equalsIgnoreCase(“退出”)
。你应该调试你的代码,找出哪里出了问题。请看:你在if条件出现之前接受了两次输入,所以在它实际出现之前,它会期望两次输入。出了什么问题?有道理,我不知道为什么我看不见这一点。,,
break