Java案例中的问题将继续提示进行有效选择

Java案例中的问题将继续提示进行有效选择,java,Java,你好,我有一个很难让我的代码工作,我有它的大部分工作,但当谈到菜单它崩溃。我想做的就是: 实现printMenu()方法。printMenu()有一个ShoppingCart参数,并输出一个操作购物车的选项菜单。每个选项由单个字符表示。在方法中生成并输出菜单 如果输入了无效字符,请继续提示输入有效的选择。提示:在实现其他选项之前先实现退出。在main()方法中调用printMenu()。继续执行菜单,直到用户输入q退出 我已经完成了菜单部分,但它不断循环。菜单部分的代码如下所示: 项目采购 公共

你好,我有一个很难让我的代码工作,我有它的大部分工作,但当谈到菜单它崩溃。我想做的就是:

实现printMenu()方法。printMenu()有一个ShoppingCart参数,并输出一个操作购物车的选项菜单。每个选项由单个字符表示。在方法中生成并输出菜单

如果输入了无效字符,请继续提示输入有效的选择。提示:在实现其他选项之前先实现退出。在main()方法中调用printMenu()。继续执行菜单,直到用户输入q退出

我已经完成了菜单部分,但它不断循环。菜单部分的代码如下所示: 项目采购 公共类ItemToPurchase{

private String itemName;
private int itemPrice;
private int itemQuantity;
private String itemDescription;
public ItemToPurchase(){
   this.itemName = "none";
   this.itemPrice = 0;
   this.itemQuantity = 0;
   this.itemDescription = "none";
}

publicItemToPurchase(字符串itemName、int itemPrice、int itemQuantity、字符串
项目描述)
{
this.itemName=itemName;
this.itemPrice=itemPrice;
this.itemQuantity=itemQuantity;
this.itemsdescription=itemsdescription;
}
公共字符串getName(){
返回itemName;
}
public void setName(字符串itemName){
this.itemName=itemName;
}
public int getPrice(){
退货价格;
}
公共无效设置价格(int itemPrice){
this.itemPrice=itemPrice;
}
公共整数getQuantity(){
退货数量;
}
公共void setQuantity(int itemQuantity){
this.itemQuantity=itemQuantity;
}
公共字符串getDescription(){
退货项目描述;
}
public void setDescription(字符串itemsdescription){
this.itemsdescription=itemsdescription;
}
公共无效printItemCost(){
int小计=项目数量*项目价格;
System.out.print(itemName+“”+itemQuantity+“@$”+itemPrice+”=
$”+小计);
System.out.println(“”);
}
//打印项目名称
//及描述
public void printItemDescription(){
System.out.println(this.itemName+“:”+this.itemsdescription);
}
}
**购物车**
导入java.util.ArrayList;
公共类购物车{
私有字符串客户名称;
私有字符串currentDate;
私有ArrayList cartItems=新ArrayList();
公共购物车(){
customerName=“无”;
currentDate=“2016年1月1日”;
//cartItemToPurchases=新的ArrayList();
}
公共购物车(字符串customerName,字符串currentDate){
this.customerName=客户名称;
this.currentDate=currentDate;
//cartItemToPurchases=新的ArrayList();
}
公共字符串getCustomerName(){
返回客户名称;
}
公共字符串getDate(){
返回当前日期;
}
public void setCustomerName(字符串customerName){
this.customerName=客户名称;
}
公共无效设置日期(字符串currentDate){
this.currentDate=currentDate;
}
公共无效附加项(ItemToPurchase ItemToPurchaseToPurchaseToPurchase){
如果(cartItems!=null){
cartItems.add(itemToPurchaseToPurchase);
}
}
public void removietem(字符串itemName){
如果(cartItems!=null){
对于(ItemToPurchase ItemToPurchase:cartItems){
if(itemToPurchase.getName().equals(itemName)){
cartItems。删除(itemToPurchase);
回来
}
}
System.out.println(“购物车中找不到商品,未删除任何内容”);
}
}
公共作废修改项(ItemToPurchase ItemToPurchaseToPurchaseToPurchase){
布尔itemFound=false;
如果(cartItems!=null){
对于(项目采购项目:cartItems){
if(item.getName().equals(itemtopourchasetopurchase.getName())){
itemFound=true;
如果(!itemToPurchaseToPurchase.getDescription()等于(“无”)){
item.setDescription(itemToPurchaseToPurchase.getDescription());
}
如果(itemToPurchaseToPurchase.getQuantity()!=0){
item.setQuantity(itemToPurchaseToPurchase.getQuantity());
}
如果(itemToPurchaseToPurchase.getPrice()!=0){
item.setPrice(itemtopourchasetopurchase.getPrice());
}
}
}
if(itemFound!=true){
System.out.println(“购物车中找不到商品,未修改任何内容”);
}
}
}
public int getNumItemsInCart(){
int totalQuantity=0;
如果(cartItems!=null){
对于(ItemToPurchase ItemToPurchase:cartItems){
totalQuantity+=itemToPurchase.getQuantity();
}
}
返回总数量;
}
public int getCostOfCart(){
int totalCostOfCart=0;
如果(cartItems!=null){
对于(ItemToPurchase ItemToPurchase:cartItems){
零件总成本+=(itemToPurchase.getQuantity()*
itemToPurchase.getPrice());
}
}
退货总成本;
}
公共发票总额(){
if(cartItems==null | | cartItems.size()==0){
System.out.println(“购物车是空的”);
回来
}
System.out.println(customerName+“\”的“+”购物车-“+当前日期);
System.out.println(“项目数:+getNumItemsInCart());
System.out.println();
对于(ItemToPurchase ItemToPurchase:cartItems){
printItemCost();
}
System.out.println();
System.out.println(“总计:$”+getCostOfCart());
}
公共描述(){
if(cartItems==null | | cartItems.size()==0){
System.out.println(“购物车是空的”);
回来
}
System.out.println(customerName+“\”的“+”购物车-“+当前日期);
System.out.println(“\n项目说明”);
对于(ItemToPurchase ItemToPurchase:cartItems){
itemToPurchase.printItemDescription();
}
}
}
**购物车经理**
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
公共类购物车经理{
私有静态BufferedReader br=新BufferedReader(新
InputStreamReader(System.in));
//打印选项菜单
公共静态无效打印菜单(ShoppingCart ShoppingCart)
T
public ItemToPurchase(String itemName, int itemPrice, int itemQuantity, String 
itemDescription)
{
   this.itemName = itemName;
   this.itemPrice = itemPrice;
   this.itemQuantity = itemQuantity;
   this.itemDescription = itemDescription;
}


public String getName(){
   return itemName;
}

public void setName(String itemName){
   this.itemName = itemName;
}

public int getPrice(){
   return itemPrice;
}

public void setPrice(int itemPrice){
   this.itemPrice = itemPrice;
 }

 public int getQuantity(){
   return itemQuantity;
 }

 public void setQuantity(int itemQuantity){
   this.itemQuantity = itemQuantity;
 }

 public String getDescription(){
   return itemDescription;
}

public void setDescription( String itemDescription){
   this.itemDescription = itemDescription;
}


  public void printItemCost(){
    int subtotal = itemQuantity * itemPrice;
    System.out.print(itemName+" "+itemQuantity+" @ $"+itemPrice+" = 
   $"+subtotal);
    System.out.println("");
}

  // Prints the item name
// and description
public void printItemDescription(){
   System.out.println(this.itemName + ": "+ this.itemDescription);
      }



     }


      **ShoppingCart**
     import java.util.ArrayList;
 public class ShoppingCart {
 private String customerName;
 private String currentDate;
 private ArrayList<ItemToPurchase> cartItems = new ArrayList<>();

 public ShoppingCart(){
    customerName = "none";
    currentDate = "1 January, 2016";
    //cartItemToPurchases = new ArrayList<ItemToPurchase>();
 }

 public ShoppingCart(String customerName, String currentDate){
    this.customerName = customerName;
    this.currentDate = currentDate;
    //cartItemToPurchases = new ArrayList<ItemToPurchase>();
 }

 public String getCustomerName(){
    return customerName;
 }

 public String getDate(){
    return currentDate;
 }
public void setCustomerName(String customerName){
this.customerName = customerName;
}

public void setDate(String currentDate){
this.currentDate = currentDate;
}

public void addItem(ItemToPurchase itemToPurchaseToPurchase){
    if(cartItems != null){
        cartItems.add(itemToPurchaseToPurchase);
    }
}

public void removeItem(String itemName){
    if(cartItems != null){
    for(ItemToPurchase itemToPurchase : cartItems){
    if(itemToPurchase.getName().equals(itemName)){
    cartItems.remove(itemToPurchase);
                return;
            }
        }
        System.out.println("Item not found in cart. Nothing removed.");
    }
 }

 public void modifyItem(ItemToPurchase itemToPurchaseToPurchase){
    boolean itemFound = false;
    if(cartItems != null){
    for(ItemToPurchase item : cartItems){
    if(item.getName().equals(itemToPurchaseToPurchase.getName())){
         itemFound = true;

         if(!itemToPurchaseToPurchase.getDescription().equals("none")){
             item.setDescription(itemToPurchaseToPurchase.getDescription());
  }
        if(itemToPurchaseToPurchase.getQuantity() != 0){
           item.setQuantity(itemToPurchaseToPurchase.getQuantity());
                }
        if(itemToPurchaseToPurchase.getPrice() != 0){
           item.setPrice(itemToPurchaseToPurchase.getPrice());
                }
            }
        }
        if(itemFound != true){
            System.out.println("Item not found in cart. Nothing modified.");
        }
    }
   }

  public int getNumItemsInCart(){
    int totalQuantity = 0;
    if(cartItems != null){
    for(ItemToPurchase itemToPurchase : cartItems){
        totalQuantity += itemToPurchase.getQuantity();
        }
    }
    return totalQuantity;
  }

 public int getCostOfCart(){
    int totalCostOfCart = 0;
    if(cartItems != null){
     for(ItemToPurchase itemToPurchase : cartItems){
         totalCostOfCart += (itemToPurchase.getQuantity()* 
itemToPurchase.getPrice());
        }
    }
    return totalCostOfCart;
 }

 public void printTotal(){
    if(cartItems == null || cartItems.size() == 0){
        System.out.println("SHOPPING CART IS EMPTY.");
        return;
    }
    System.out.println(customerName+"\'s"+" Shopping Cart - "+currentDate);
    System.out.println("Number of Items: "+getNumItemsInCart());
    System.out.println();              
    for(ItemToPurchase itemToPurchase : cartItems){
        itemToPurchase.printItemCost();        
    }
    System.out.println();
    System.out.println("Total: $"+getCostOfCart());
}

public void printDescriptions(){
    if(cartItems == null || cartItems.size() == 0){
        System.out.println("SHOPPING CART IS EMPTY.");
        return;
    }
    System.out.println(customerName+"\'s"+" Shopping Cart - "+currentDate);
    System.out.println("\nItem Descriptions");
    for(ItemToPurchase itemToPurchase : cartItems){
        itemToPurchase.printItemDescription();
    }
 }


 }
      **ShoppingCartManager**
      import java.io.BufferedReader;
      import java.io.IOException;
      import java.io.InputStreamReader;
      public class ShoppingCartManager{
       private static BufferedReader br = new BufferedReader(new 
        InputStreamReader(System.in));
      // Prints a menu of options
    public static void printMenu(ShoppingCart shoppingCart)
               throws IOException
        {
       char choice = ' ';
         while (true)
    {
       System.out.println("\nMENU");
       System.out.println("a - Add item to cart");
       System.out.println("d - Remove item from cart");
       System.out.println("c - Change item quantity");
       System.out.println("i - Output items' descriptions");
       System.out.println("o - Output shopping cart");
       System.out.println("q - Quit");
       System.out.println("");
       System.out.println("Choose an option:");
       choice = br.readLine().charAt(0);

       if (!((choice == 'a') || (choice == 'd') ||
               (choice == 'c') || (choice == 'i')
               || (choice == 'o')|| (choice == 'q')))
       {
          System.out.println("Choose an option:");
       choice = br.readLine().charAt(0); 
       continue;
       }
       else
       {
           switch (choice)
           {

           case 'a':
               System.out.println("ADD ITEM TO CART");
               System.out.println("Enter the item name:");
               String itemName = br.readLine();
               System.out.println("Enter the item description:");
               String itemDesc = br.readLine();
               System.out.println("Enter the item price:");
               int itemPrice = Integer.parseInt(br.readLine());
               System.out.println("Enter the item quantity:");
               int itemQty = Integer.parseInt(br.readLine());
               ItemToPurchase it = new ItemToPurchase(itemName,
                       itemPrice, itemQty, itemDesc);

               shoppingCart.addItem(it);


               break;
           // Remove item
           case 'd':
               System.out.println("REMOVE ITEM FROM CART");
               System.out.println("Enter name of item to remove:");
               itemName = br.readLine();

               shoppingCart.removeItem(itemName);
               break;
           // Change item quantity
           case 'c':


               System.out.println("CHANGE ITEM QUANTITY");
               System.out.println("Enter item name:");
               itemName = br.readLine();
               System.out.println("Enter the new quantity:");
               itemQty = Integer.parseInt(br.readLine());
               ItemToPurchase item = new ItemToPurchase(itemName, 0, itemQty, 
                    "none");
               item.setName(itemName);
               item.setQuantity(itemQty);
               shoppingCart.modifyItem(item);

               break;
           // Output items' descriptions
           case 'i':
               System.out.println("OUTPUT ITEMS' DESCRIPTIONS");
               shoppingCart.printDescriptions();
               break;
           // Output shopping cart
           case 'o':
               System.out.println("OUTPUT SHOPPING CART");
               shoppingCart.printTotal();
               break;
           // Quit
           case 'q':
               br.close();
               System.exit(0);
               }
           }
       }
    }
     public static void main(String args[]){

   try
   {
       System.out.println("Enter Customer's Name:");
       String customerName = br.readLine();
       System.out.println("Enter Today's Date:");
       String currentDate = br.readLine();
       System.out.println();

       ShoppingCart shoppingCart = new ShoppingCart(customerName, 
currentDate);
       System.out.println("Customer Name: " + shoppingCart.getCustomerName());
       System.out.println("Today's Date: " + shoppingCart.getDate());

       printMenu(shoppingCart);
   }
   catch (IOException ioe)
   {
       System.out.println(ioe.toString());
   }
   catch (Exception e)
   {
       System.out.println(e.toString());
   }
 }
   System.out.println("\nMENU");
   System.out.println("a - Add item to cart");
   System.out.println("d - Remove item from cart");
   System.out.println("c - Change item quantity");
   System.out.println("i - Output items' descriptions");
   System.out.println("o - Output shopping cart");
   System.out.println("q - Quit");
   System.out.println("");
   System.out.println("Choose an option:");
boolean shouldPrintMenu = true;

while (true) {
    if (shouldPrintMenu) {
        // ...
    } else {
        shouldPrintMenu = true;
    }

    System.out.println("Choose an option:");
    choice = br.readLine().charAt(0);

    if (!( (choice == 'a') || (choice == 'd')
        || (choice == 'c') || (choice == 'i')
        || (choice == 'o') || (choice == 'q')))
    {
        shouldPrintMenu = false;
        continue;
    }
    // ...
}