После компиляции кода не выводит текст на консоль

подскажите в чем моя ошибка? (Код компилируется, но выводит пустую строку на консоль). Хотел бы вывести на консоль товар в зависимости от введённого номера с клавиатуры. Можно ли реализовать данный код через switch case?

public class Demo1 {

public void baskTovar(String ... katal){
    System.out.println(" Товары в корзине :");

    if ("1".equals(katal)) {
        System.out.println("Товар Штаны (чёрного цвета) добавлен в корзину");
    } else if ("2".equals(katal)) {
        System.out.println("Товар Штаны (желтого цвета) добавлен в корзину");
    } else if ("3".equals(katal)) {
        System.out.println("Товар Майка (белого цвета) добавлен в корзину");
    } else if ("4".equals(katal)) {
        System.out.println("Товар Майка (черного цвета) добавлен в корзину");
    } else if ("5".equals(katal)) {
        System.out.println("Товар Галстук (розового цвета) добавлен в корзину");
    } else if ("6".equals(katal)) {
        System.out.println("Товар Галстук (чёрного цвета) добавлен в корзину");
    } else if ("7".equals(katal)) {
        System.out.println("Товар Часы (белого цвета) добавлен в корзину");
    } else if ("8".equals(katal)) {
        System.out.println("Товар Часы (серого цвета) добавлен в корзину");
    }


}

}

public class Demo2 {
public static void main(String[] args) throws IOException {
    BufferedReader buf = new BufferedReader( new InputStreamReader(System.in));
    String katal = null;
    Demo1 demo1 = new Demo1();
    katal= buf.readLine();
    demo1.baskTovar(katal);
}

}


Ответы (1 шт):

Автор решения: Nowhere Man

Основная проблема исходного кода в том, что строки-константы "1", "2", .. "8" сравниваются с массивом строк katal.

Следует либо заменить тип аргумента в методе baskTovar на обычную строку, либо проитерировать по массиву.

Также вместо множественных операторов if/else if следовало воспользоваться оператором / выражением switch, предусмотрев при этом печать сообщения, когда ни одно из условий не выполнилось:


public void baskTovar(String katal){
    System.out.println(" Товары в корзине :");

    String message = switch(katal) {
        case "1" -> "Товар Штаны (чёрного цвета) добавлен в корзину";
        case "2" -> "Товар Штаны (желтого цвета) добавлен в корзину";
        case "3" -> "Товар Майка (белого цвета) добавлен в корзину";
        case "4" -> "Товар Майка (чёрного цвета) добавлен в корзину";
        case "5" -> "Товар Галстук (розового цвета) добавлен в корзину";
        case "6" -> "Товар Галстук (чёрного цвета) добавлен в корзину";
        case "7" -> "Товар Часы (белого цвета) добавлен в корзину";
        case "8" -> "Товар Часы (серого цвета) добавлен в корзину";
        default -> "Неизвестный код: " + katal;
    };

    System.out.println(message);
}
→ Ссылка