在 switch 中使用字符串值,在 case 中使用字符串列表

问题描述 投票:0回答:1

我有两个不同的字符串列表:

firstList [a, b, c]
secondList [d, e, f]
。有没有办法在案例陈述中使用列表?

需要明确的是,预期的行为是这样的:

switch("a"){
    case firstList
        // some code here
    case secondList
        // some code here
}
java string list switch-statement
1个回答
0
投票

不幸的是,切换大小写有一些规则。

众所周知,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");
}
   

希望它能以某种方式帮助您,或者可能在不久的将来使某人受益。

© www.soinside.com 2019 - 2024. All rights reserved.