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