java - 如何编写基于3个变量的switch语句?

标签 java permutation

我有一个我想使用的遗留 validator 类。它提供了所有排列来验证 1-3 个不同的字段。

class Validator {
    Checker Validator.A, Validator.B, Validator.C;
    Checker[] ABC = {Validator.A, Validator.B, Validator.C};
    Checker[] AB = {Validator.A, Validator.B};
    Checker[] BC = {Validator.B, Validator.C};
    Checker[] AC = {Validator.A, Validator.C};
}

我对这门课没有任何影响。但必须使用这些跳棋之一。

我想根据不为空的字段选择所需的 validator 。 因此,我写了以下 switch 语句。但对我来说,它似乎非常丑陋。我该如何改进?

String a, b, c;
boolean isA = !a.isEmpty();
boolean isB = !b.isEmpty();
boolean isC = !c.isEmpty();

Checker[] checker;

if (isA && isB && isC) {
    checker = Validator.ABC;
} else if (isA && isB) {
    checker = Validator.AB;
} else if (isA && isC) {
    checker = Validator.AC;
} else if (isB && isC) {
    checker = Validator.BC;
} else if (isA) {
    checker = Validator.A;
} else if (isB) {
    checker = Validator.B;
} else if (isC) {
    checker = Validator.C;
}

最佳答案

这个怎么样?

List<Checker> checkers = new ArrayList<Checker>();
if (!a.isEmpty()) checkers.add(Validator.A);
if (!b.isEmpty()) checkers.add(Validator.B);
if (!c.isEmpty()) checkers.add(Validator.C);
Checker[] checker = checkers.toArray(new Checker[checkers.size()]);

关于java - 如何编写基于3个变量的switch语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19905630/

相关文章:

lisp - 生成列表的排列

algorithm - 计算数组的排列

c - 以特定顺序获取字符串组合的递归算法

java - 遍历 hastable 键的枚举会引发 NoSuchElementException 错误

java - Java 和 readLine() 的回车和换行

java - 如何在 Java 中对 long 进行 mod2^64?

Java 语法数组 {1,2,3} 与 new int[] {1,2,3}

java - ArrayList<Integer> 的排列

java - 查找忽略反射的子类别排列总数

java - java回文客户端程序错误"Cannot find symbol"