【问题标题】:Alternative codeing instead of "if else" logic for AndroidAndroid 的替代编码而不是“if else”逻辑
【发布时间】:2017-02-18 00:15:13
【问题描述】:

我创建了一个脚本,根据所选选项显示结果。

我需要:A、B、C、D (0,1,-1)

int A = 0;
int B = 0;
int C = 0;
int D = 0;

Ansver 将是 16 种组合之一。

if A = 1 = A1;
if A = -1 = A2;
if B = 1 = B1;
if B = -1 B2;
if C = 1 = C1;
If C = -1 = C2;
If D = 1 = D1;
if D = -1 = D1;

A1;B1;C1;D1 = Nr1
A1;B1;C1;D2 = Nr2
A1;B1;C2;D1 = Nr3
A1;B1;C2;D2 = Nr4
A1;B2;C1;D1 = Nr5
A1;B2;C1;D2 = Nr6
A1;B2;C2;D1 = Nr7
A1;B2;C2;D2 = Nr8
A2;B1;C1;D1 = Nr9
A2;B1;C1;D2 = Nr10
A2;B1;C2;D1 = Nr11
A2;B1;C2;D2 = Nr12
A2;B2;C1;D1 = Nr13
A2;B2;C1;D2 = Nr14
A2;B2;C2;D1 = Nr15
A2;B2;C2;D2 = Nr16

我想展示潜在的变体。
当您按下组合时:A1, B1 = "Nr1,Nr2,Nr3,Nr4"
当您按下组合时:A1, D1 = "Nr1,Nr3,Nr5,Nr7"
稍后将有更多变量EFGH .... 等。但答案只会是第 16 个

可能是什么逻辑,我有点卡住了?
If / Else 好像太长了。

if/else 示例:

    if (A == 1) {
        if (B == 1) {
            if (C == 1) {
                if (D == 1) {
                    scoreTeamA = "Nr1"; //A1,B1,C1,D1
                } else if (D == -1) {
                    scoreTeamA = "Nr2"; //A1,B1,C1,D2
                } else scoreTeamA = "Nr1, Nr2"; //A1,B1,C1
            } else if (B == 1) {
                if (D == 1) {
                    scoreTeamA = "Nr3"; //A1,B1,C1,D1
                } else if (D == -1) {
                    scoreTeamA = "Nr4"; //A1,B1,C1,D2
                } else scoreTeamA = "Nr3,Nr4"; //A1,B1,C2
            } else scoreTeamA = "Nr1,Nr2,Nr3,Nr4"; //A1,B1
        } else if (B == -1) {
            scoreTeamA = "Nr5,Nr6,Nr7,Nr8";//A1,B2
        } else
            scoreTeamA = "Nr1,Nr2,Nr3,Nr4,Nr5,Nr6,Nr7,Nr8"; //A1
    } else if (A == -1) { 
        scoreTeamA = "Nr9,Nr10,Nr11,Nr12,Nr13,Nr14,Nr15,Nr16"; //A2
    }

【问题讨论】:

  • 逻辑取决于你,你希望你的代码如何。

标签: android


【解决方案1】:

想到的一些替代方案:

  1. 一长串if...else 语句。

  2. switch 语句。不过,这不会比if...else 好多少。

  3. 一种数据结构,例如Map

  4. 自定义类层次结构。通常switch 语句可以被多态性代替。这在很大程度上取决于您实际在做什么。

【讨论】:

  • 我不明白那个代码可能是什么,如果想使用map,请理解这是最好的选择。
  • @MārtiņšDoniņš 我不明白你的评论
  • @Code-Apprentics 我不明白如何将map 用于所有这些。现有代码:link也许你可以分享一个例子。否则,现在我总是发现错误的例子。
  • @MārtiņšDoniņš 我将创建一个包含 A、B、C 和 D 的类以用作键。该值就是您在此处的代码中放入 scoreTeamA 的值。您可以硬编码地图的创建或从文件中读取数据。创建地图后,创建一个键对象并调用 get()。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2015-09-29
    • 1970-01-01
    • 2022-08-15
    • 2011-10-02
    • 1970-01-01
    • 2016-03-24
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多