首页 > 解决方案 > 将字符串值映射到字符串列表中的值的逻辑

问题描述

目前我在我的应用程序中有一个问题,如果我将值(类型)作为“6”并将 fcID 值作为 fcList 中除“OVERRIDE”之外的任何值,那么它不会像应有的那样评估为 false。如果我将类型的值设为“6”,将 fcID 设为“OVERRIDE”,则它可以工作,并且如果我为类型提供任何其他值,例如“1”、“2”、“3”等,它将评估为假如预期。

我有两种不同的方法,一种用于验证类型,另一种用于验证 fcID 列表是否有效。根据要求,如果它是“5”类型,则值可以是 fcList 中的任何值,而不是“OVERRIDE”,它应该返回为真。如果是类型“6”,则对于 fcID 应该只有“OVERRIDE”并返回 true。如果 Type 是“5”或“6”以外的任何值,并且输入的 fcID 无效(不在 fcList 中),它应该返回 false。

以下是我对这两种方法的代码:

//method for validating the type
public static boolean isTypeFormatValid (String type, String fcID) {
    if (type.equals("5") || type.equals("6")) {
        if (!(type.equals("5") && fcID.equals("OVERRIDE"))) {
            return true;
        }
    }
    return false;
}

//method for validating the fcID from an entity list where it only pulls for type 5 and 6 from the table for the fcID
public static boolean isfcIDValid(String value, List<FCIDS> fcList) {
    for (FCIDS fc : fcList) {
        if (fc.getFCId().equals(value)) {
            return true;
        }
    }
    return false;
}

在这种特殊情况下,如果类型为“5”且列表中的 fcID(“OVERRIDE”除外)正确,则它似乎评估为 true,如果类型为“6”且 fcID 为“OVERRIDE”,则评估为 true,如果类型为“5”且值为“OVERRIDE”,则为假,如果 fcID 不在 fcList 中,则为假,如果类型为 1、2、3、4、7、8 等,则为假,但将当类型为“6”并且 fcID 是 fcList 中除“OVERRIDE”之外的任何内容时,不会评估为 false。示例:Type = "6", fcID="validValueInList" 不会评估为假,但根据要求它应该为假。

在这一点上我有点卡住了,我不确定如何构建逻辑以实现以下情况:

  1. 类型 5 具有来自 fcList 而非 OVERRIDE 的值并返回 true
  2. 类型 6 只能映射到 fcList 中的值 OVERRIDE 并返回 true
  3. 5 或 6 以外的类型,以及具有类型 5 和 OVERRIDE 的 fcID 的场景,应返回 false。
  4. 任何不在 fcList 中的 fcID 都将评估为假。

任何帮助将不胜感激涵盖这些场景,其中唯一不起作用的是 type = "6", fcID = "validValueInListOtherThanOVERRIDE"。

标签: listbooleanlogicjava-ee-8

解决方案


推荐阅读