3 回答
TA贡献1946条经验 获得超3个赞
我会将int[][]每个值定义mode为一个键。喜欢,
int[][] modes = { {}, { 2, 6, 24 }, { 2, 8, 48 }, { 3, 6, 36 } };
if (mode > 0 && mode < 4) {
repeats = modes[mode][0];
columns = modes[mode][1];
size = modes[mode][2];
}
TA贡献1815条经验 获得超10个赞
使用三元 ? 运算符将不起作用,因为您要根据 的值更新太多变量mode
。如果你用过?那么您一次只能在一个变量上使用它,并且代码将非常繁琐且难以阅读。切换是最好的选择
TA贡献1829条经验 获得超9个赞
最好的擦除方法if是使用多态。对于给定的代码,您可以抽象一个类或一个接口并以不同的方式实现该方法。示例代码如下。
public class Test {
public static void main(String[] args) {
int modeValue = 1;//2,3 ...
ModeFactory modeFactory = new ModeFactory();
Mode mode = modeFactory.generateMode(modeValue);
mode.fillData();
System.out.println("mode info:" + mode.toString());
}
}
abstract class Mode {
int repeats;
int columns;
int size;
abstract void fillData();
@Override
public String toString() {
return "Mode{" +
"repeats=" + repeats +
", columns=" + columns +
", size=" + size +
'}';
}
}
class Mode1 extends Mode {
@Override
void fillData() {
repeats = 2;
columns = 6;
size = 24;
}
}
class Mode2 extends Mode {
@Override
void fillData() {
repeats = 2;
columns = 8;
size = 48;
}
}
class Mode3 extends Mode {
@Override
void fillData() {
repeats = 3;
columns = 6;
size = 36;
}
}
class ModeFactory {
Mode generateMode(int modeValue) {
if (modeValue == 1) {
return new Mode1();
}
if (modeValue == 2) {
return new Mode2();
}
return new Mode3();
}
}
design patterns 可以帮助您解决这些问题。
添加回答
举报