我确实知道Java,但是切换案例......我只想说我已经避免使用它们了,我真的不喜欢它们作为结构。
但现在我被迫使用它们来选择并发问题的通道。在这种情况下,我只是不知道从我被解释的开关改为if-else。
所以我有一系列的案例,从1到N-1。前4我知道案件是什么,他们各自做不同的事情。
从5到N-1,所有这些都是相同的,唯一的区别是,如果是情况7,它必须评估的值是P + 7,依此类推。
我可以以某种方式使用循环吗? N可以达到100000,手工做是非常糟糕的。
更接近我的目标here
当它说:
for (Planet p : Planet.values()) {
System.out.printf("Your weight on %s is %f%n", p, p.surfaceWeight(mass));
}
但我不需要迭代每个值,只需从5到N-1。
请告诉我,如果我没有解释自己,这将是通常的事情。英语是我的第二语言。
编辑:我不是100%确定我能够正确管理这些案例,所以我害怕使用默认值,因为它是并发代码,我宁愿使用一组我可以定义的值。
答案 0 :(得分:3)
我会使用带有默认值的switch case,存储该值以消除并发问题
final int val = getConcurrentValue();
switch(val) {
case 1: doThingOne(); break;
case 2: doThingTwo(); break;
case 3: doThingThree(); break;
case 4: doThingFour(); break;
default: doCommonThing(CONSTANT_VALUE_P + val);
}
或者,如果将它包装在一个方法中(这会大大提高可重用性,最终会消除并发问题。
static void operate(int val) {
switch(val) {
// copy switch statement from above
}
}
// elsewhere
import com.example.util.Functions;
void foo() {
Functions.operate(getConcurrentValue());
}