Добрый день, столкнулся со следующей проблемой. Создал массив и инициализировал в нем элементы. Затем решил использовать массив в 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, который автоматически отсортирует. К тому же в коллекциях еще много всяких плюшек по сравнению с массивами.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здравствуйте, вопрос по androidУ меня есть двухуровневый список и всплывающее контекстное меню, подскажите пожалуйста как мне добыть id группы...
Стандартные, такие как Chosen или Select2 не подходят, тк