为了账号安全,请及时绑定邮箱和手机立即绑定

? 多个 ifs/cleaner 代码的运算符

? 多个 ifs/cleaner 代码的运算符

开满天机 2022-01-06 17:27:05
所以我在完成的项目中有这部分代码:        if (mode == 1) {                            repeats = 2;        columns = 6;        size = 24;    }    else if (mode == 2) {                       repeats = 2;        columns = 8;        size = 48;    }    else if (mode == 3) {                       repeats = 3;        columns = 6;        size = 36;    }我只是弄乱了它,我想知道是否有更好的方法来使用 ? 运营商或任何其他方式。
查看完整描述

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];

}


查看完整回答
反对 回复 2022-01-06
?
动漫人物

TA贡献1815条经验 获得超10个赞

使用三元 ? 运算符将不起作用,因为您要根据 的值更新太多变量mode。如果你用过?那么您一次只能在一个变量上使用它,并且代码将非常繁琐且难以阅读。切换是最好的选择


查看完整回答
反对 回复 2022-01-06
?
PIPIONE

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 可以帮助您解决这些问题。


查看完整回答
反对 回复 2022-01-06
  • 3 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信