Java 如何在switch语句上设置do…while循环并添加输入?

Java 如何在switch语句上设置do…while循环并添加输入?,java,netbeans,while-loop,switch-statement,Java,Netbeans,While Loop,Switch Statement,我目前正在做一个项目,必须取一个整数1-10,将其转换为一个双精度,然后乘以该双精度的数量。然而,所有这些都必须由用户输入,就像你在餐馆点东西一样。我遇到的问题是得到一个上面的循环,它存储总的(价格*数量),然后将其全部相加。实验:1*5=5+4.5*2=9=总共14个。我必须循环到用户可以用输入终止循环的点。我尝试过在交换机中添加一个计数器+,但我所做的一切似乎都不起作用。下面是我正在处理的当前代码 总而言之,我需要在下面循环(直到提示不循环),并不断累积总数,直到在System.out.pr

我目前正在做一个项目,必须取一个整数1-10,将其转换为一个双精度,然后乘以该双精度的数量。然而,所有这些都必须由用户输入,就像你在餐馆点东西一样。我遇到的问题是得到一个上面的循环,它存储总的(价格*数量),然后将其全部相加。实验:1*5=5+4.5*2=9=总共14个。我必须循环到用户可以用输入终止循环的点。我尝试过在交换机中添加一个计数器+,但我所做的一切似乎都不起作用。下面是我正在处理的当前代码

总而言之,我需要在下面循环(直到提示不循环),并不断累积总数,直到在
System.out.println(“total”)中得到一个最终总数

 /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package Menu;
import java.util.Scanner;
/**
 *
 * @author -------
 */


public class Menu {


    public static void main(String[] args) {
    Scanner input= new Scanner(System.in);
    Scanner keyboard = new Scanner (System.in);

    double price = 0;
    int ItemNum;
    int quantity;
    double change;
    double total;
    double payment;
    int counter = 1;


    System.out.println("Welcome to Home Italliano!\nHit enter for menu.");
    keyboard.nextLine();


    System.out.println("Menu" +"\n"+"(1)Noodles - 1.15$"+"\n"+"(2)Pizza Slice - 3.00$"
        +"\n"+"(3)Lasagna - 4.99$"+"\n"+"(4)Beverage - 2.25"+"\n"+"(5)Md. Pizza - 7.85$"+"\n"+
        "(6)Lg. Pizza - 11.10$"+"\n"+"(7)Calzone - 3.30$"+"\n"+"(8)Garlic Knot - 1.25$"
        +"\n"+"(9)Rg. Pasta - 8.00$"+"\n"+"(10)Triple Meat Pasta - 9.99$");

    while (counter ==1)
    System.out.println("Please input the number of the item you wish to order. hit 0 for total.");
    ItemNum = input.nextInt();

    System.out.println("Please enter the quantity for this item");
    quantity = input.nextInt();

    total = price * quantity;

    switch (ItemNum){
        case 0:
            counter++;
        case 1:
            price = 1.15;
            break;
        case 2:
            price = 3.00;
            break;
        case 3:
            price = 4.99;
            break;
        case 4:
            price = 2.25;
            break;
        case 5:
            price = 7.85;
            break;
        case 6:
            price = 11.10;
            break;
        case 7:
            price = 3.30;
            break;
        case 8:
            price = 1.25;
        case 9:
            price = 8.00;
            break;
        case 10:
            price = 9.99;
            break;
        default:
                System.out.println("Please enter a menu item.");

    } 

    System.out.println(total);


        }

            }    
一些提示:

  • 将逻辑封装在无限循环中(即
    while(true))
  • 小心你的花括号
  • 使用特定的
    int
    或使用
    Scanner.nextLine
    获取输入的
    String
    表示(即,“q”表示“退出”),并
    中断无限循环(如果匹配)(在这种情况下,需要一些
    String
    ->
    int
    转换)
  • 是意大利语,加上一个“l”

    • 您的while循环没有任何支架:

      while (counter ==1)
      

      正如其他人指出的:while循环缺少大括号,因此只影响第二行

      另外:在您通过switch子句确定价格之前,您正在访问该价格

      虽然添加大括号可能会起作用,但您的解决方案应该更像这样:

      1、为菜单上的项目创建私有类。这样的菜单项会有名称和价格

      2,然后创建MenuItems的java.utils.HashMap。然后用菜单初始化这张地图。 映射将给定的键(在本例中为menuNumber)映射到给定的对象(在本例中为MenuItem对象)

      例如:

      3、做初始输出

      System.out.println("Menu:");
      for(String key: menuMap.keySet())
      {
          System.out.println(menuMap.get(key).toString());
      }
      
      4、创建一个while循环,如下所示

      //Initially Scan for and validate ItemChoice
      while(!inputMenuNumber == 'Exit Signal')
      {
          //Scan for and validate Input Amount
      
          MenuItem chosenItem = menuMap.get(inputMenuNumber);
          total = chosenItem.getItemPrice() * Integer.valueOf(inputAmount);
      
          //Scan for and validate ItemChoice
      }
      Sytem.out.println(total);
      
      它使代码更容易阅读和理解


      如果你有任何问题,请毫不犹豫地提问。

      在你的
      行后面放一个空括号
      {
      ,而(计数器==1)
      行在switch语句后面放一个小括号
      }
      。我看不出上面的代码是如何通过“请输入数字…”当前的行:看起来它将继续不确定地打印该语句。您的while循环没有括号,因此下一行是循环中唯一的一行,它在循环中不存在。我将括号添加到while循环和切换之后。但现在我得到了System.out.println(总数);在total上抛出一个错误,因为变量可能没有初始化;似乎有效。
      //Initially Scan for and validate ItemChoice
      while(!inputMenuNumber == 'Exit Signal')
      {
          //Scan for and validate Input Amount
      
          MenuItem chosenItem = menuMap.get(inputMenuNumber);
          total = chosenItem.getItemPrice() * Integer.valueOf(inputAmount);
      
          //Scan for and validate ItemChoice
      }
      Sytem.out.println(total);