我需要用768个不同的元素制作一个if-elseif语句。
是否有可能减少写作的努力?我知道这是一个奇怪的问题,但我需要测试768种不同的消息。
所以问题的确如此:
对于大量if语句是否有简单的方法,或者我只需要为行键入所有行?
如果有任何不清楚的地方,请随时提出。
修改
private static final String TEST = "0 0 0 0 0 40 ";
private static final String TEST2 = "0 96 0 0 0 d6 ";
private static final String TEST3 = "1 28 0 0 1 68 ";
private static final String TEST4 = "2 07 0 0 2 47 ";
private static final String TEST5 = "2 be 0 0 2 fe ";
if (data.contains(TEST)){
progress = 0;
} else if (data.contains(TEST2)) {
progress = 20;
} else if (data.contains(TEST3)) {
progress = 40;
} else if (data.contains(TEST4)) {
progress = 70;
} else if (data.contains(TEST5)) {
progress = 96;
}
EDIT2:
这里有一些数学研究的样本数据:
00 00 00 00 00 40 00 00
00 00 00 00 00 40 00 00
00 01 00 00 00 41 00 00
00 02 00 00 00 42 00 00
00 03 00 00 00 43 00 00
00 04 00 00 00 44 00 00
00 05 00 00 00 45 00 00
00 06 00 00 00 46 00 00
00 07 00 00 00 47 00 00
00 08 00 00 00 48 00 00
.. .. .. .. .. .. .. ..
01 00 00 00 01 40 00 00
.. .. .. .. .. .. .. ..
02 00 00 00 02 40 00 00
.. .. .. .. .. .. .. ..
02 BF 00 00 02 FF 00 00
但有时在第7位还有另一个十六进制数在20到61之间。这就是问题所在。
答案 0 :(得分:4)
使用HashMap
。将条件存储为键,将响应存储为值。
答案 1 :(得分:4)
我需要用768个不同的元素制作一个if-elseif语句。
不,你没有。你在以后的问题中承认,当你写下:
我需要测试768种不同的消息
这不需要“带有768个不同元素的if-elseif语句”。虽然这可能是解决问题的一种方法,但正如您所指出的那样,这不是一个很好的解决方案。
对于大量if语句是否有简单的方法,或者我只需要为行键入所有行?
不要做其中任何一个。
步骤1:在HashMap<String, Integer>
中获取测试字符串(例如,从XML资源加载它们)。
步骤2:迭代keySet()
的{{1}},并测试每个密钥。如果匹配,请将HashMap
设置为progress
中的相应值,并将HashMap
设置为迭代循环中的相应值。
答案 2 :(得分:2)
使用以下内容:
static class TestWithProgress {
final String test;
final int progress;
TestWithProgress(String test, int progress) {
this.test = test;
this.progress = progress;
}
}
private static TestWithProgress[] TWIPS = new TestWithProgress[] {
new TestWithProgress("0 0 0 0 0 40 ", 0),
new TestWithProgress("0 96 0 0 0 d6 ", 20),
...
};
现在你可以使用for循环:
for (TestWithProgress twip : TWIPS) {
if (data.contains(twip.test)) {
progress = twip.progress;
break;
}
}
答案 3 :(得分:-3)
如果我必须面对这个问题,我可以使用
Switch(str){
case:strCheck
}