Добрый день, столкнулся со следующей проблемой. Создал массив и инициализировал в нем элементы. Затем решил использовать массив в switch. Массив у меня типа String. В блоке switch возникает ошибка:
Required java.lang.String[] found java.lang.String
Подскажите пожалуйста, где я ошибся или что еще нужно сделать? И вообще, можно ли использовать String массив в switch?
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Person Alex = new Person();
Alex.Speak(" Alex");
System.out.println("What kind of job I have to do today?");
String kindofjob = s.nextLine();
String[] joboffer = {
"carry box",
"eat smth",
"say my name"
};
switch (joboffer) {
case "carry box":
Alex.Work(kindofjob);
break;
}
}
}
Вы не можете использовать массив как параметр switch. Если вы хотите пройти по всем элементам массива и обработать совпадения, используйте цикл и внутри него проверяйте. Например Ваш switch можно было бы заменить таким циклом
for(String str: joboffer){
switch (str) {
case "carry box":
Alex.Work(kindofjob);
break;
}
так нельзя писать. в свитч можно передать стринг, но не его массив. какую вы реакцию ожидаете на case "carry box"? да, один из элементов массива совпадает по содержанию со строкой, но не сам массив как объект. хотите искать элементы в массиве - придется гонять цикл. но лучше используйте HashSet, его метод contains очень быстро определит , есть ли в данной коллекции такая строка.
Set <String> set = new HashSet<>();
set.add("carry box");
set.add("eat smth");
set.add("say my name");
boolean contains = set.contains("carry box");
примерно так. в переменной boolean contains будет результат проверки на наличие элемента. мало того, создавая коллекцию типа Set, вы можете помимо HashSet выбрать LinkedHashSet, который сохранит тот порядок элементов, в котором вы их хаписываете, либо TreeSet, который автоматически отсортирует. К тому же в коллекциях еще много всяких плюшек по сравнению с массивами.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости