use*_*930 9 java switch-statement
我需要检查一个String对象是否包含()各种子串,并根据结果执行不同的代码片段.目前我有一系列的其他如果.如果可能的话我想把它转换成一个开关.有没有办法做到这一点?
目前:
if (SomeString.contains("someSubString")) {
. . . do something
} else if (SomeString.contains("anotherSubString")) {
. . . do something else
} else if (SomeString.contains("yetanotherSubString")) {
. . . do something even more different
}
.
.
.
Run Code Online (Sandbox Code Playgroud)
Sil*_*eak 18
当我遇到这样的情况,并且真的不想使用时else if,我会这样做:
String[] cases = {"someSubString", "anotherSubString", "yetanotherSubString"};
int i;
for(i = 0; i < cases.length; i++)
if(SomeString.contains(cases[i])) break;
switch(i) {
case 0: //someSubString
System.out.println("do something");
break;
case 1: //anotherSubString
System.out.println("do something else");
break;
case 2: //yetanotherSubString
System.out.println("do something even more different");
break;
default:
System.out.println("do nothing");
}
Run Code Online (Sandbox Code Playgroud)
当然,这有一些缺点.对于初学者来说,如果你在除了结尾之外的任何地方添加另一个字符串,所有索引都会移动,你必须手动纠正.尽管如此,我认为我已经使用了一两次这样的东西,并认为它使代码更具可读性.据推测,这些指数在程序中具有一定的意义,从而0...someSubString以一种对问题有意义的方式进行耦合.
| 归档时间: |
|
| 查看次数: |
11571 次 |
| 最近记录: |