Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

458
Views
using .startsWith in switch case in Java

I want to use .startsWith in switch case in java but it expects String and not a boolean value. I tried to create a wrapper function for it and return String but I am getting an error saying constant expected

I want to convert the following if-else block in switch case

if (currCmd.equals(allProduct)) {
            warehouseObj.viewItems();

        } else if (currCmd.startsWith(buyProduct)) { // todo
            String productId = currCmd.substring(4);
            long lProductId=Long.parseLong(productId);
            cartProcessor.addItem(currUser.getUserid(),lProductId,currCart,warehouseObj);

        } else if (currCmd.equals(viewCart)) {
            cartProcessor.viewItems(currUser.getUserid(),currCart);

        } else if (currCmd.equals(checkout)) {
            cartProcessor.checkOut(currUser.getUserid(),currCart);

        } else if (currCmd.startsWith(delete)) { // todo
            String productId = currCmd.substring(7);
            long lProductId =Long.parseLong(productId);
            warehouseObj.deleteItem(lProductId, currUser.getIsAdmin());

        } else if (currCmd.equals(addProduct)) {

            if (!currUser.getIsAdmin()) {
                System.out.println("PERMISSION DENIED");

            } else {
                // remove sc
                Scanner sc = new Scanner(System.in);
                addProduct2Warehouse(warehouseObj, sc);
            }
        }
        else  {
            System.out.println("INVALID COMMAND!");
        }
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Assuming that currCmd is a string which may look like "buy $PRODUCT_ID" or "delete $PRODUCT_ID" for the commands compared with startsWith, it may be worth to extract the "verb" from the command and use it in switch (using shorter arrow syntax of Java 12+):

String cmd = currCmd.split(" ")[0];
switch (cmd) {
    case ALL_PRODUCT -> warehouseObj.viewItems();
    case BUY_PRODUCT -> {
        String productId = currCmd.substring(4);
        long lProductId = Long.parseLong(productId);
        cartProcessor.addItem(currUser.getUserid(), lProductId, currCart, warehouseObj);
    }
    case VIEW_CART -> cartProcessor.viewItems(currUser.getUserid(), currCart);
    case CHECKOUT -> cartProcessor.checkOut(currUser.getUserid(), currCart);
    case DELETE -> {
        String productId = currCmd.substring(7);
        long lProductId = Long.parseLong(productId);
        warehouseObj.deleteItem(lProductId, currUser.getIsAdmin());
    }
    case ADD_PRODUCT -> {
        if (!currUser.getIsAdmin()) {
            System.out.println("PERMISSION DENIED");
        } else {
            // remove sc
            Scanner sc = new Scanner(System.in);
            addProduct2Warehouse(warehouseObj, sc);
        }
    }
    default -> System.out.println("INVALID COMMAND!");
}
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!