【发布时间】:2019-08-10 23:52:47
【问题描述】:
我们知道,从 Java 7 开始,Switch 的表达式可以是字符串。所以我正在制作一个应用程序,当用户选择一个类别时,他/她将根据类别值被分配到相关部门。这是代码:-
public class Selector {
///String array to save the departments
private final static String[] DEPTS = {
"A",
"B",
"C",
"D"
};
//String array for the categories
private final static String[] CATEGORY = {
"Wind",
"Air",
"Fire",
"Cloud",
"River",
"Tree",
"Abc",
"Def"
};
//return the department when user selects a particular category item from above
public static String setDepartment(String category) {
switch(category){
case "Wind":
return DEPTS[0];
case "Air":
return DEPTS[1];
case "Fire": case "Cloud": case "River":
return DEPTS[2];
case "Tree": case "Abc": case "Def":
return DEPTS[3];
}
return null;
}
}
所以我在想如何使用部门的数组索引返回部门项目,我可以在案例值中使用相同的东西,比如,
case CATEGORY[0]: case CATEGORY[1]:
return DEPTS[2];
原因如果类别项目包含一个大字符串,那么案例将变得太长而无法写入。如果java不允许这样做,你能建议一些其他的方法,这样我的代码就不会变得麻烦吗?谢谢。
【问题讨论】:
-
您可以使用常量
Map<List<String>, String>来存储您的键值映射,迭代键集中的Lists 以搜索与输入匹配的任何匹配项并返回关联的值。一些键将是 1 号Lists。 -
case中只允许使用常量。 -
只需为该任务创建一个映射。您可以使用 MAP 作为示例。
标签: java arrays string switch-statement