Java ,多个变量都只允许是 0 或 1,怎么写简单

2020 年 12 月 30 日
 nutting
if (!(open.equals("0") || open.equals("1")) && (w1.equals("0") || w1.equals("1"))
&& (w2.equals("0") || w2.equals("1")) && (w3.equals("0") || w3.equals("1"))
&& (w4.equals("0") || w4.equals("1")) && (w5.equals("0") || w5.equals("1"))
&& (w6.equals("0") || w6.equals("1")) && (w7.equals("0") || w7.equals("1"))) {
throw new Exception("设置项目参数非法!");
}

checkstyle 检测说表达式过于复杂,怎么简化,最好别用 java8 以上的什么新语法
7037 次点击
所在节点    Java
52 条回复
zunceng
2020 年 12 月 30 日
开个脑洞 设计个注解式的 validator?

class A extern Validator {
// value_of=1,2,3;
int A;
// min=0; max=10;
int B;
// value_of="0", "1"
string C;
}

method:
bool IsValid()
string ErrorMessage()
chendy
2020 年 12 月 30 日
说二进制的朋友们……没看到楼主的是字符串么
LGA1150
2020 年 12 月 30 日
if (Stream.of(open, w1, w2).anyMatch(x -> !"0".equals(x) && !"1".equals(x))) throw ...
marcong95
2020 年 12 月 30 日
Pattern.matches("[01]{8}", open+w1+w2+w3+w4+w5+w6+w7)
Flywith24
2020 年 12 月 30 日
hfc
2020 年 12 月 30 日
new 个 set,初始只有字符串的 0 和 1,后续把上面这一串变量往里面塞,最后 set.size()>2 就是存在非法参数
phpfpm
2020 年 12 月 30 日
你拆成多个 if-elseif 多好
这样 throw 的时候你还有在哪出问题的 context
sutra
2020 年 12 月 30 日
Ranying
2020 年 12 月 30 日
遍历这些变量拼接的字符串
liyanggyang
2020 年 12 月 30 日
@yuk1no 这个可
lululau
2020 年 12 月 30 日
Stream.of(w1, w2, ...).anyMatch(w -> w.matches("[01]"))
lululau
2020 年 12 月 30 日
Stream.of(w1, w2, ...).anyMatch(w -> !w.matches("[01]"))
Cbdy
2020 年 12 月 30 日
Stream.of(w1, w2, w3, w4, w5).allMatch(List.of("0", "1")::contains);
Lemeng
2020 年 12 月 30 日
正则好写
otakustay
2020 年 12 月 30 日
容易玩脱的办法:把 0 和 1 拼起来变二进制再转数字,然后用位操作判断
laqow
2020 年 12 月 30 日
如果是用户界面的话就几个控件单次运算的,这么写写可以的吧
Joker123456789
2020 年 12 月 30 日
枚举啊,不是 0 和 1 赋值不进去, 然后判空即可。
KarmaWu
2020 年 12 月 30 日
Stream.of(w1, w2, w3, w4, w5, w6, w7).allMatch(List.of("0", "1")::contains);
Vegetable
2020 年 12 月 30 日
太逗了吧,字符串拼起来正则一下如何。
weidaizi
2020 年 12 月 30 日
感觉回复挺火热的,但是出现这种丑陋的检测,难道不是之前类型的设计思路出问题了吗? 改这里多半不是好的办法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/740262

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX