以下方法有时返回true值,有时返回false。有人可以检查这是什么问题。该方法的输入为“ 19”
public static boolean isStoreValid(String storeNo) {
boolean isEnabled = true;
try {
String enabledStores = "9,18,43,44,32,38,19,37,23,29,34,31,17,20,3,5,6,7,8,10,21,24,25,26,11,12,14,15,16,22,27,28,30,33";
String storeList = enabledStores.trim();
String storeNoArray[] = storeList.split(",");
if (storeNoArray != null && storeNoArray.length > 0) {
isEnabled = false;
for (String store : storeNoArray) {
if (storeNo.equals(store.trim())) {
isEnabled = true;
break;
}
}
} else {
isEnabled = true;
}
} catch (Exception e) {
isEnabled = true;
e.printStackTrace();
}
return isEnabled;
}
答案 0 :(得分:0)
在逻辑上不正确的是RunLoop.main.add(yourTimer, forMode: RunLoopMode.commonModes)
块,它应该与成功完成else
块的否定
if
将其更改为
else {
isEnabled = true;
}
意味着没有商店时,您将else {
isEnabled = false;
}
,因为商店将无效。
您共享的代码块不会引发异常,因此您可以轻松摆脱return false
。
您可以直接从块中try-catch
来代替boolean标志:
return
此外,如果您想提高可读性,可以简化为
if (storeNoArray != null && storeNoArray.length > 0) {
for (String store : storeNoArray) {
if (storeNo.equals(store.trim())) {
return true;
}
}
} else {
return false;
}
return false;