Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

459
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda