在Java中,对于带有大量||的if语句是否有更简洁的方法
发布时间:2020-05-24 18:59:59 所属栏目:Java 来源:互联网
导读:我知道这个问题是基本的,但我正在寻找一个不太笨拙的方法,以下if语句: if ((sOne.Contains(*)) || (sOne.Contains(/)) || (sOne.Contains(-)) || (sOne.Contains(+)) || (sOne.Contains(%))){ 我还应该注意,sOne.Contains()引用了以下代码…… public bo
|
我知道这个问题是基本的,但我正在寻找一个不太笨拙的方法,以下if语句: if ((sOne.Contains('*')) || (sOne.Contains('/')) || (sOne.Contains('-')) || (sOne.Contains('+')) || (sOne.Contains('%'))){
我还应该注意,sOne.Contains()引用了以下代码…… public boolean Contains(char key) {
// Checks stack for key
boolean retval = arrs.contains(key);
return retval;
}
还应该指出的是,这五个字符永远不会改变. 解决方法您可以在字符数组上使用break-each循环:for (char c : "*/-+%".toCharArray()) {
if (sOne.Contains(c)) {
// ...
break;
}
}
如果你非常关心性能,你可能还需要拔出toCharArray()调用并将结果缓存在一个静态的最终char []常量中. 您甚至可以使用此策略在sOne对象上定义其他便捷方法,例如ContainsAny或ContainsAll(对于名称ContainsAny,信用为Sina Madrid): public boolean ContainsAny (CharSequence keys) {
for (int i = 0; i < keys.length; i++)
if (Contains(keys.charAt(i)) return true;
return false;
}
public boolean ContainsAll (CharSequence keys) {
for (int i = 0; i < keys.length; i++)
if (!Contains(keys.charAt(i)) return false;
return true;
}
用法看起来像这样: if (sOne.ContainsAny("*/-+%")) {
// ...
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
