метод split класса String и для каждого цикла, не дающего желаемый результат - PullRequest
0 голосов
/ 01 декабря 2018

следующий метод иногда возвращает истинное значение, иногда ложное.Может кто-нибудь проверить, в чем проблема в этом.Вход для метода "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 голосов
/ 01 декабря 2018
  1. Что логически неверно - это блок else, что должно быть отрицанием успешного выполнения if блока

    else {
        isEnabled = true;
    }
    

    изменить его на

    else {
        isEnabled = false;
    }
    

    То есть, когда нет магазинов, вы должны return false, так как магазин не будет действительным.

  2. Нет исключений, выданных кодомобщий для вас блок, так что вы можете легко избавиться от try-catch.

  3. Вместо использования логического флага вы можете напрямую return из своих блоков:

    if (storeNoArray != null && storeNoArray.length > 0) {
        for (String store : storeNoArray) {
            if (storeNo.equals(store.trim())) {
                return true;
            }
        }
    } else {
       return false;
    }
    return false;
    
  4. И далее, если вам будет интересно улучшить читаемость, вы можете упростить как

    return Arrays.stream(storeNoArray)
                     .anyMatch(store -> storeNo.equals(store.trim()));
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...