如何在switch语句中设置do ... while循环并添加输入?

时间:2014-09-05 10:58:14

标签: java netbeans while-loop switch-statement

我目前正在开发一个必须采用整数1-10的项目,将其切换为双倍,然后将数量加倍。但是,所有这些都必须由用户输入,例如您从餐馆订购的东西。我遇到的问题是获得上面的循环,存储总数(价格*数量),然后将其全部加起来。 exp: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);


        }

            }    

3 个答案:

答案 0 :(得分:0)

一些提示:

  • 将您的逻辑包含在无限循环中(即while(true))
  • 注意循环的大括号
  • 使用特定的int或使用Scanner.nextLine来获得输入的String表示(即" q"用于"退出" )和break无限循环(如果匹配)(在这种情况下,您需要进行一些String - > int转换)
  • 它" Italiano",有一个" l"

答案 1 :(得分:0)

你的while循环没有任何大括号:

while (counter ==1)

答案 2 :(得分:0)

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

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

虽然添加大括号可能会有效,但您的解决方案看起来应该更像:

1,为菜单上的项目创建一个私有类。这样的MenuItem将具有名称和价格。

2,然后创建MenuItems的java.utils.HashMap。然后使用菜单初始化此地图。 Map将给定的Key(在本例中为menuNumber)映射到给定的Object(在我们的示例中为MenuItem对象)

E.g:

menuMap.put(1, new MenuItem("Noodles", Double.valueOf("1.15"));

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);

它使代码更容易阅读和理解。

如果您有任何疑问,请随时提出。