Question

Online shopping cart (continued) (Java) Hello, I need help with Java to figure this out. In...

Online shopping cart (continued) (Java)

Hello, I need help with Java to figure this out. In my Shopping Cart Manager Class (Bottom Code), I get "Resource leak: 'sc' is never closed." I have tried multiple things and cannot figure it out. Thank you.

Online shopping cart (continued) (Java)

Hello, I need help with Java to figure this out. In my Shopping Cart Manager Class (Bottom Code), I get "Resource leak: 'sc' is never closed." I have tried multiple things and cannot figure it out. Thank you.

/*Shopping Cart Manager Class*/

import java.util.Scanner;

public class ShoppingCartManager {
   public static void main(String[] args) {
       String customerName, currentDate;
       Scanner sc = new Scanner(System.in);
       System.out.print("Enter Customer's Name:");
       customerName = sc.nextLine().toString().trim();
       System.out.println();
       System.out.print("Enter Today's Date:");
       currentDate = sc.nextLine().toString().trim();
       System.out.println();
       ShoppingCart cart = new ShoppingCart(customerName, currentDate);
       System.out.println("Customer Name:" + cart.getCustomerName());
       System.out.println("Today's Date:" + cart.getDate());
       printMenu(cart);

   }
   /* Prints the menu, and builds the shopping cart * object passed in as parameter */
      private static void printMenu(ShoppingCart cart) {
       Scanner sc = new Scanner(System.in);
       char choice = 'z';
       System.out.println("MENU:");
       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' Description");
       System.out.println("o - Output Shopping Cart");
       System.out.println("q - Quit");
       System.out.print("Enter an option:");
       choice = sc.nextLine().trim().charAt(0);
       while (choice != 'q') {
           if (choice != 'a' && choice != 'd' && choice != 'c' && choice != 'i' && choice != 'o') {
               // An invalid choice is made
               // Prompt for choice again
               System.out.print("Enter an option:");
               choice = sc.nextLine().trim().charAt(0);
               continue;
           } else {
               switch (choice) {
               case 'o': {
                   System.out.println("OUTPUT SHOPPING CART");
                   cart.printTotal();
                   break;
               }
               case 'i': {
                   System.out.println("OUTPUT ITEMS' DESCRIPTIONS");
                   cart.printDescriptions();
                   break;
               }
               case 'a': {
                   String name, desc;
                   int price, qty;
                   System.out.println("ADD ITEM TO CART");
                   System.out.println("Enter Item name:");
                   name = sc.nextLine().trim().toString();
                   System.out.println("Enter Item description:");
                   desc = sc.nextLine().trim().toString();
                   System.out.println("Enter Item price:");
                   price = sc.nextInt();
                   sc.nextLine();
                   System.out.println("Enter Item quantity:");
                   qty = sc.nextInt();
                   sc.nextLine();
                   ItemToPurchase itemToPurchase = new ItemToPurchase(name, desc, qty, price);
                   cart.addItem(itemToPurchase);
                   break;
               }
               case 'd': {
                   String itemToRemove;
                   System.out.println("REMOVE ITEM FROM CART");
                   System.out.println("Enter name of item to remove:");
                   itemToRemove = sc.nextLine().trim().toString();
                   cart.removeItem(itemToRemove);
                   break;
               }
               case 'c': {
                   String itemName;
                   int itemQty;
                   System.out.println("CHANGE ITEM QUANTITY");
                   System.out.println("Enter item name:");
                   itemName = sc.nextLine().trim().toString();
                   System.out.println("Enter the new quantity:");
                   itemQty = sc.nextInt();
                   sc.nextLine();
                   ItemToPurchase item = new ItemToPurchase(itemName, "none", itemQty, 0);
                   cart.modifyItem(item);
                   break;
               }
               }
               System.out.print("Enter an option:");
               choice = sc.nextLine().trim().charAt(0);
           }
       }
   }
}

0 0
Add a comment Improve this question Transcribed image text
Answer #1

Note:

###########

The problem which you have given in the question arrised because you have not closed Scanner object sc in the code.

To do that just use sc.close(); at the end of each method which uses scanner. I cant run the code as the supporting classes like ShoppingCart are missing in the question you have given. Try adding sc.close() at the end of functions which uses sc as below

//########################## PGM START ##################################

package one;

import java.util.Scanner;

public class ShoppingCartManager {
   public static void main(String[] args) {
       String customerName, currentDate;
       Scanner sc = new Scanner(System.in);
       System.out.print("Enter Customer's Name:");
       customerName = sc.nextLine().toString().trim();
       System.out.println();
       System.out.print("Enter Today's Date:");
       currentDate = sc.nextLine().toString().trim();
       System.out.println();
       ShoppingCart cart = new ShoppingCart(customerName, currentDate);
       System.out.println("Customer Name:" + cart.getCustomerName());
       System.out.println("Today's Date:" + cart.getDate());
       printMenu(cart);
       sc.close();

   }
   /* Prints the menu, and builds the shopping cart * object passed in as parameter */
      private static void printMenu(ShoppingCart cart) {
       Scanner sc = new Scanner(System.in);
       char choice = 'z';
       System.out.println("MENU:");
       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' Description");
       System.out.println("o - Output Shopping Cart");
       System.out.println("q - Quit");
       System.out.print("Enter an option:");
       choice = sc.nextLine().trim().charAt(0);
       while (choice != 'q') {
           if (choice != 'a' && choice != 'd' && choice != 'c' && choice != 'i' && choice != 'o') {
               // An invalid choice is made
               // Prompt for choice again
               System.out.print("Enter an option:");
               choice = sc.nextLine().trim().charAt(0);
               continue;
           } else {
               switch (choice) {
               case 'o': {
                   System.out.println("OUTPUT SHOPPING CART");
                   cart.printTotal();
                   break;
               }
               case 'i': {
                   System.out.println("OUTPUT ITEMS' DESCRIPTIONS");
                   cart.printDescriptions();
                   break;
               }
               case 'a': {
                   String name, desc;
                   int price, qty;
                   System.out.println("ADD ITEM TO CART");
                   System.out.println("Enter Item name:");
                   name = sc.nextLine().trim().toString();
                   System.out.println("Enter Item description:");
                   desc = sc.nextLine().trim().toString();
                   System.out.println("Enter Item price:");
                   price = sc.nextInt();
                   sc.nextLine();
                   System.out.println("Enter Item quantity:");
                   qty = sc.nextInt();
                   sc.nextLine();
                   ItemToPurchase itemToPurchase = new ItemToPurchase(name, desc, qty, price);
                   cart.addItem(itemToPurchase);
                   break;
               }
               case 'd': {
                   String itemToRemove;
                   System.out.println("REMOVE ITEM FROM CART");
                   System.out.println("Enter name of item to remove:");
                   itemToRemove = sc.nextLine().trim().toString();
                   cart.removeItem(itemToRemove);
                   break;
               }
               case 'c': {
                   String itemName;
                   int itemQty;
                   System.out.println("CHANGE ITEM QUANTITY");
                   System.out.println("Enter item name:");
                   itemName = sc.nextLine().trim().toString();
                   System.out.println("Enter the new quantity:");
                   itemQty = sc.nextInt();
                   sc.nextLine();
                   ItemToPurchase item = new ItemToPurchase(itemName, "none", itemQty, 0);
                   cart.modifyItem(item);
                   break;
               }
               }
               System.out.print("Enter an option:");
               choice = sc.nextLine().trim().charAt(0);
           }
       }
       sc.close();
   }
}

//#################################### PGM END #############################

Add a comment
Know the answer?
Add Answer to:
Online shopping cart (continued) (Java) Hello, I need help with Java to figure this out. In...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • This program extends the earlier "Online shopping cart" program. (Consider first saving your earlier program).

    Ch 7 Program: Online shopping cart (continued) (Java)This program extends the earlier "Online shopping cart" program. (Consider first saving your earlier program).(1) Extend the ItemToPurchase class per the following specifications:Private fieldsstring itemDescription - Initialized in default constructor to "none"Parameterized constructor to assign item name, item description, item price, and item quantity (default values of 0). (1 pt)Public member methodssetDescription() mutator & getDescription() accessor (2 pts)printItemCost() - Outputs the item name followed by the quantity, price, and subtotalprintItemDescription() - Outputs the...

  • I need help with this assignment, can someone HELP ? This is the assignment: Online shopping...

    I need help with this assignment, can someone HELP ? This is the assignment: Online shopping cart (continued) (C++) This program extends the earlier "Online shopping cart" program. (Consider first saving your earlier program). (1) Extend the ItemToPurchase class per the following specifications: Parameterized constructor to assign item name, item description, item price, and item quantity (default values of 0). (1 pt) Public member functions SetDescription() mutator & GetDescription() accessor (2 pts) PrintItemCost() - Outputs the item name followed by...

  • CODES: main.cpp #include <iostream> #include <string> #include "ShoppingCart.h" using namespace std; char PrintMenu() { char answer;...

    CODES: main.cpp #include <iostream> #include <string> #include "ShoppingCart.h" using namespace std; char PrintMenu() { char answer; cout << "MENU" << endl; cout << "a - Add item to cart" << endl; cout << "d - Remove item from cart" << endl; cout << "c - Change item quantity" << endl; cout << "i - Output items' descriptions" << endl; cout << "o - Output shopping cart" << endl; cout << "q - Quit" << endl << endl; while (true) {...

  • 4.18 Ch 7 Program: Online shopping cart (continued) (C++) This program extends the earlier "Online shopping...

    4.18 Ch 7 Program: Online shopping cart (continued) (C++) This program extends the earlier "Online shopping cart" program. (solution from previous lab assignment is provided in Canvas). (1) Extend the ItemToPurchase class per the following specifications: Parameterized constructor to assign item name, item description, item price, and item quantity (default values of 0). (1 pt) Public member functions SetDescription() mutator & GetDescription() accessor (2 pts) PrintItemCost() - Outputs the item name followed by the quantity, price, and subtotal PrintItemDescription() -...

  • 11.12 LAB*: Program: Online shopping cart (continued) This program extends the earlier "Online shopping cart" pr...

    11.12 LAB*: Program: Online shopping cart (continued)This program extends the earlier "Online shopping cart" program. (Consider first saving your earlier program).(1) Extend the ItemToPurchase class to contain a new attribute. (2 pts)item_description (string) - Set to "none" in default constructorImplement the following method for the ItemToPurchase class.print_item_description() - Prints item_description attribute for an ItemToPurchase object. Has an ItemToPurchase parameter.Ex. of print_item_description() output:Bottled Water: Deer Park, 12 oz.(2) Build the ShoppingCart class with the following data attributes and related methods. Note: Some can be method stubs...

  • 7.11 LAB: Online shopping cart - Part 2 This program extends the earlier "Online shopping cart" program. (Consid...

    7.11 LAB: Online shopping cart - Part 2 This program extends the earlier "Online shopping cart" program. (Consider first saving your earlier program). (1) Extend the ItemToPurchase namedtuple to contain a new attribute. (2 pts) item_description (string) - Set to "none" in the construct_item() function Implement the following function with an ItemToPurchase as a parameter. print_item_description() - Prints item_name and item_description attribute for an ItemToPurchase namedtuple. Has an ItemToPurchase parameter. Ex. of print_item_description() output: Bottled Water: Deer Park, 12 oz....

  • Zybooks 11.12 LAB*: Program: Online shopping cart (continued) Python 3 is the code needed and this...

    Zybooks 11.12 LAB*: Program: Online shopping cart (continued) Python 3 is the code needed and this is in Zybooks Existing Code # Type code for classes here class ItemToPurchase: def __init__(self, item_name="none", item_price=0, item_quantity=0): self.item_name = item_name self.item_price = item_price self.item_quantity = item_quantity # def __mul__(self): # print_item_cost = (self.item_quantity * self.item_price) # return '{} {} @ ${} = ${}' .format(self_item_name, self.item_quantity, self.item_price, print_item_cost) def print_item_cost(self): self.print_cost = (self.item_quantity * self.item_price) print(('{} {} @ ${} = ${}') .format(self.item_name, self.item_quantity, self.item_price,...

  • 8.7 LAB*: Program: Online shopping cart (Part 2)

    8.7 LAB*: Program: Online shopping cart (Part 2)Note: Creating multiple Scanner objects for the same input stream yields unexpected behavior. Thus, good practice is to use a single Scanner object for reading input from System.in. That Scanner object can be passed as an argument to any methods that read input.This program extends the earlier "Online shopping cart" program. (Consider first saving your earlier program).(1) Extend the ItemToPurchase class per the following specifications:Private fieldsstring itemDescription - Initialized in default constructor to "none"Parameterized...

  • Need three seperate files. ShoppingCartManager.java ShoppingCart.java ItemsToPurchase.java These are from part 1 what do you mean...

    Need three seperate files. ShoppingCartManager.java ShoppingCart.java ItemsToPurchase.java These are from part 1 what do you mean by deep study 7.25 LAB*: Program: Online shopping cart (Part 2) Note: Creating multiple Scanner objects for the same input stream yields unexpected behavior. Thus, good practice is to use a single Scanner object for reading input from System.in. That Scanner object can be passed as an argument to any methods that read input This program extends the earlier Online shopping cart program (Consider...

  • Python3 programming help needed LAB*: Program: Online shopping cart (continued) Need the below code edited to...

    Python3 programming help needed LAB*: Program: Online shopping cart (continued) Need the below code edited to run properly for the lab.. class ItemPurchase:     def __init__(self, nameitem='none', item_prc=0, item_quntity=0, item_descrp = 'none'):         self.nameitem = nameitem         self.item_prc = item_prc         self.item_quntity = item_quntity         self.item_descrp = item_descrp     def print_itemvaluecost(self):              string = '{} {} @ ${} = ${}'.format(self.nameitem, self.item_quntity, self.item_prc(self.item_quntity * self.item_prc))         valuecost = self.item_quntity * self.item_prc         return string, valuecost     def print_itemdescription(self):         string...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT