1
haoz1w0w Dec 30, 2020
>1 不就行了
|
2
boris93 Dec 30, 2020 via Android
就不能用 bool ?
|
3
jimliang Dec 30, 2020
人才
|
4
flyfanc Dec 30, 2020
Arrays.asList("1", "0").containsAll(Arrays.asList(w1,w2,w3,…));
|
5
jintianfengda Dec 30, 2020 抽出来方法封装呗
public boolean checkAll(String... args){} 代码洁癖患者提醒,最好使用"1".equals(open)哦,01 用枚举替代 |
6
nutting OP @haoz1w0w 没写清楚,是字符的 0 或者 1
@boris93 呃,历史原因,不过也对啊,看看能不能改 @jintianfengda 抽不抽好说,关键是判断的写法 @flyfanc 你这个写法我研究一下 |
7
Gilgamesh7 Dec 30, 2020
假设接收参数的是 body,使用 validation 注解校验参数,然后字段注解使用 @Pattern,写个正则判断一下是字符串 0 或 1
|
8
yuk1no Dec 30, 2020 via iPhone
Stream.of(x, y, z).allMatch(s -> s.equals("0") || s.equals("1"));
|
9
chendy Dec 30, 2020 1 抽单个的判断方法 boolean isValid(String x) { return "0".equals(x) || "1".equals(x); }
2 抽一堆的判断方法 boolean isValid(String... xs) { for(String x in xs) { if (!isValid(x)) {return false} } return true;} |
10
Mohanson Dec 30, 2020 via Android
r = a∣ b ∣c ...
r = r & 0 if r != 0 , throw |
11
rb6221 Dec 30, 2020 via iPhone
你们花样真多……枚举他不香嘛
|
12
Mohanson Dec 30, 2020 via Android
r = r & (0xffffffff - 1) 上面公式有误,fix
|
13
lxychn Dec 30, 2020
```
for (String arg : Arrays.asList(w1, w2, w3)) { if (!arg.equals("0") && !arg.equals("1")) { throw new Exception("Invalid arg: " + arg); } } ``` |
14
xe2vherd Dec 30, 2020 via iPhone
计数
|
15
Cabana Dec 30, 2020
用位运算 mask 掩码模式
|
16
zhanglintc Dec 30, 2020
用正则如何:
import java.util.regex.*; String pattern = "[01]"; if ( !(Pattern.matches(pattern, open) && Pattern.matches(pattern, w1) && Pattern.matches(pattern, w2) && Pattern.matches(pattern, w3) && Pattern.matches(pattern, w4) && Pattern.matches(pattern, w5) && Pattern.matches(pattern, w6) && Pattern.matches(pattern, w7)) ) { throw new Exception("设置项目参数非法!"); } |
17
JQD6r41PkI4o2mEz Dec 30, 2020 via Android 拼起来用正则
|
18
zhuawadao Dec 30, 2020
把这几个变量直接拼成字符串,然后用正则看是否只有 0 或只有 1
|
19
lonelinsky Dec 30, 2020 via Android new 一个 Set, 然后变量全 put 然后检查 Set 的 size 和 content
|
20
yanhh Dec 30, 2020 这种都是用二进制掩码来做,楼主应该没写过底层一点的东西,哈哈,可以看看最靠近的 WinAPI,里边有很多。
|
21
zunceng Dec 30, 2020
开个脑洞 设计个注解式的 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() |
22
chendy Dec 30, 2020
说二进制的朋友们……没看到楼主的是字符串么
|
23
LGA1150 Dec 30, 2020
if (Stream.of(open, w1, w2).anyMatch(x -> !"0".equals(x) && !"1".equals(x))) throw ...
|
24
marcong95 Dec 30, 2020
Pattern.matches("[01]{8}", open+w1+w2+w3+w4+w5+w6+w7)
|
25
Flywith24 Dec 30, 2020 |
26
hfc Dec 30, 2020 new 个 set,初始只有字符串的 0 和 1,后续把上面这一串变量往里面塞,最后 set.size()>2 就是存在非法参数
|
27
phpfpm Dec 30, 2020
你拆成多个 if-elseif 多好
这样 throw 的时候你还有在哪出问题的 context |
28
sutra Dec 30, 2020
|
29
Ranying Dec 30, 2020
遍历这些变量拼接的字符串
|
30
liyanggyang Dec 30, 2020
@yuk1no 这个可
|
31
lululau Dec 30, 2020
Stream.of(w1, w2, ...).anyMatch(w -> w.matches("[01]"))
|
32
lululau Dec 30, 2020
Stream.of(w1, w2, ...).anyMatch(w -> !w.matches("[01]"))
|
33
Cbdy Dec 30, 2020
Stream.of(w1, w2, w3, w4, w5).allMatch(List.of("0", "1")::contains);
|
34
Lemeng Dec 30, 2020
正则好写
|
35
otakustay Dec 30, 2020
容易玩脱的办法:把 0 和 1 拼起来变二进制再转数字,然后用位操作判断
|
36
laqow Dec 30, 2020 via Android
如果是用户界面的话就几个控件单次运算的,这么写写可以的吧
|
37
Joker123456789 Dec 30, 2020
枚举啊,不是 0 和 1 赋值不进去, 然后判空即可。
|
38
KarmaWu Dec 30, 2020 Stream.of(w1, w2, w3, w4, w5, w6, w7).allMatch(List.of("0", "1")::contains);
|
39
Vegetable Dec 30, 2020
太逗了吧,字符串拼起来正则一下如何。
|
40
weidaizi Dec 30, 2020
感觉回复挺火热的,但是出现这种丑陋的检测,难道不是之前类型的设计思路出问题了吗? 改这里多半不是好的办法
|
41
corningsun Dec 30, 2020
提醒下,open 前面有个 `!`,只对 open 有效。建议写好单元测试再重构
https://gist.github.com/corningsun/1afdd69da58d3ed7888ce022be76d4da |
42
Gwkang Dec 30, 2020 via Android
变参加递归
|
43
akira Dec 30, 2020 既然你只是要过 chekcstyle 。。。
if (!(open.equals("0") || open.equals("1")) ) { throw new Exception("设置项目参数非法!"); } if (!(w1.equals("0") || w1.equals("1")) ) { throw new Exception("设置项目参数非法!"); } if (!(w2.equals("0") || w2.equals("1")) ) { throw new Exception("设置项目参数非法!"); } |
44
stevefan1999 Dec 31, 2020
真值表啊
|
45
stevefan1999 Dec 31, 2020
草那這樣好了
```js const isAcceptable = str => /0|1/.matches(str) if ([open, w1, w2, w3, w4, w5, w6, w7].map(isAcceptable).filter(x => !x).length > 0) { throw new Exception("设置项目参数非法!"); } ``` |
46
ojbkojbk Dec 31, 2020
你这个参数应该是从接口传入的吧,在接口的入参用注解正则校验
另外在 equals 的时候 ,常量放在前面,防止封装类型传入空报指针 |
47
xx6412223 Dec 31, 2020
这代码看着被人看了要被骂的
|
48
weizhen199 Dec 31, 2020
0000,0001,1101,0101
lz 你看看这个像啥 |
49
TheF00L Dec 31, 2020
枚举多好
|
50
daryl Dec 31, 2020
枚举不行么?
|
51
checkzhzzzzz Dec 31, 2020
map.put(str,"");
map.size() |
52
SkyLine7 Jan 4, 2021
枚举
|