String类的split方法,并且对于每个循环未提供所需的输出

时间:2018-12-01 17:07:20

标签: java arrays foreach

以下方法有时返回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;
}

1 个答案:

答案 0 :(得分:0)

  1. 在逻辑上不正确的是RunLoop.main.add(yourTimer, forMode: RunLoopMode.commonModes) 块,它应该与成功完成else块的否定

    if

    将其更改为

    else {
        isEnabled = true;
    }
    

    意味着没有商店时,您将else { isEnabled = false; } ,因为商店将无效。

  2. 您共享的代码块不会引发异常,因此您可以轻松摆脱return false

  3. 您可以直接从块中try-catch来代替boolean标志:

    return
  4. 此外,如果您想提高可读性,可以简化为

    if (storeNoArray != null && storeNoArray.length > 0) {
        for (String store : storeNoArray) {
            if (storeNo.equals(store.trim())) {
                return true;
            }
        }
    } else {
       return false;
    }
    return false;