我有两个不同的字符串列表:
firstList [a, b, c]
和secondList [d, e, f]
。有没有办法在案例陈述中使用列表?
需要明确的是,预期的行为是这样的:
switch("a"){
case firstList
// some code here
case secondList
// some code here
}
不幸的是,切换大小写有一些规则。
众所周知,switch语句的结构如下:
switch ( expression )
{
case label1:
statementList1
break;
case label2:
statementList2
break;
case label3:
statementList3
break;
. . . other cases like the above
default:
defaultStatementList
}
您要打开的表达式必须计算为原始数据类型的值。
标签必须是明确的常量值(3、3.5、“abc”、true),并且还必须与表达式的数据类型匹配
如上所述,标签必须是一个明确的常量值,我可以用编程语言来表达(标签必须是编译时常量而不是运行时常量)。
编译时间常数:程序运行前已知的预定义明确值
运行时间常数:运行前未知且必须在程序运行期间计算的值。
示例
List<String> list=new ArrayList<String>();
list.add("1");
list.add("2");
int length = 2;
switch(length){
case list.size():
System.out.println("good guess");
break;
default:
System.out.println("try again");
}
正如您在示例中看到的,开关标签
case list.size():
不是一个恒定的清除值,并且会在运行期间计算,因此它不会运行。
经过此旅程,毫无疑问 switch 语句的重要性,但最好根据您的编程需求在 if-else-if 和 switch 语句之间进行选择。
在你的问题中(假设你需要知道字符串存在于哪个列表中)
if(firstList.indeOf("apple") > -1) // true // means it's exist
{
System.out.println("found in firstList");
}
if(secondList.indexOf("apple") > -1){
System.out.println("found in secondList");
}
希望它能以某种方式帮助您,或者可能在不久的将来使某人受益。