我得到了非常长的Java代码,我不知道';我不知道如何缩短它

我得到了非常长的Java代码,我不知道';我不知道如何缩短它,java,Java,所以我有一个非常长的Java代码,它占用了2000行,就像我必须重复很多次的代码一样。有没有办法把这个写得更短 for(int d=0;d<6;d++) { for(int c=0;c<2;c++) { if(players[d][c].contains ("SA")) { if(d==0){ if(c==0) {

所以我有一个非常长的Java代码,它占用了2000行,就像我必须重复很多次的代码一样。有没有办法把这个写得更短

for(int d=0;d<6;d++) {
            for(int c=0;c<2;c++) {
                if(players[d][c].contains ("SA")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(SA);
                        } else if(c==1) {
                            p1b.setIcon(SA);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(SA);
                        } else if(c==1) {
                            p2b.setIcon(SA);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(SA);
                        } else if(c==1) {
                            p3b.setIcon(SA);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(SA);
                        } else if(c==1) {
                            p4b.setIcon(SA);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(SA);
                        } else if(c==1) {
                            p5b.setIcon(SA);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(SA);
                        } else if(c==1) {
                            p6b.setIcon(SA);
                        }
                    }
                } else if(players[d][c].contains ("S2")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(S2);
                        } else if(c==1) {
                            p1b.setIcon(S2);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(S2);
                        } else if(c==1) {
                            p2b.setIcon(S2);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(S2);
                        } else if(c==1) {
                            p3b.setIcon(S2);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(S2);
                        } else if(c==1) {
                            p4b.setIcon(S2);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(S2);
                        } else if(c==1) {
                            p5b.setIcon(S2);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(S2);
                        } else if(c==1) {
                            p6b.setIcon(S2);
                        }
                    }
                } else if(players[d][c].contains ("S3")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(S3);
                        } else if(c==1) {
                            p1b.setIcon(S3);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(S3);
                        } else if(c==1) {
                            p2b.setIcon(S3);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(S3);
                        } else if(c==1) {
                            p3b.setIcon(S3);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(S3);
                        } else if(c==1) {
                            p4b.setIcon(S3);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(S3);
                        } else if(c==1) {
                            p5b.setIcon(S3);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(S3);
                        } else if(c==1) {
                            p6b.setIcon(S3);
                        }
                    }
                } else if(players[d][c].contains ("S4")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(S4);
                        } else if(c==1) {
                            p1b.setIcon(S4);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(S4);
                        } else if(c==1) {
                            p2b.setIcon(S4);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(S4);
                        } else if(c==1) {
                            p3b.setIcon(S4);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(S4);
                        } else if(c==1) {
                            p4b.setIcon(S4);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(S4);
                        } else if(c==1) {
                            p5b.setIcon(S4);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(S4);
                        } else if(c==1) {
                            p6b.setIcon(S4);
                        }
                    }
                } else if(players[d][c].contains ("S5")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(S5);
                        } else if(c==1) {
                            p1b.setIcon(S5);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(S5);
                        } else if(c==1) {
                            p2b.setIcon(S5);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(S5);
                        } else if(c==1) {
                            p3b.setIcon(S5);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(S5);
                        } else if(c==1) {
                            p4b.setIcon(S5);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(S5);
                        } else if(c==1) {
                            p5b.setIcon(S5);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(S5);
                        } else if(c==1) {
                            p6b.setIcon(S5);
                        }
                    }
                } else if(players[d][c].contains ("S6")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(S6);
                        } else if(c==1) {
                            p1b.setIcon(S6);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(S6);
                        } else if(c==1) {
                            p2b.setIcon(S6);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(S6);
                        } else if(c==1) {
                            p3b.setIcon(S6);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(S6);
                        } else if(c==1) {
                            p4b.setIcon(S6);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(S6);
                        } else if(c==1) {
                            p5b.setIcon(S6);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(S6);
                        } else if(c==1) {
                            p6b.setIcon(S6);
                        }
                    }
                } else if(players[d][c].contains ("S7")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(S7);
                        } else if(c==1) {
                            p1b.setIcon(S7);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(S7);
                        } else if(c==1) {
                            p2b.setIcon(S7);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(S7);
                        } else if(c==1) {
                            p3b.setIcon(S7);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(S7);
                        } else if(c==1) {
                            p4b.setIcon(S7);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(S7);
                        } else if(c==1) {
                            p5b.setIcon(S7);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(S7);
                        } else if(c==1) {
                            p6b.setIcon(S7);
                        }
                    }
                } else if(players[d][c].contains ("S8")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(S8);
                        } else if(c==1) {
                            p1b.setIcon(S8);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(S8);
                        } else if(c==1) {
                            p2b.setIcon(S8);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(S8);
                        } else if(c==1) {
                            p3b.setIcon(S8);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(S8);
                        } else if(c==1) {
                            p4b.setIcon(S8);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(S8);
                        } else if(c==1) {
                            p5b.setIcon(S8);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(S8);
                        } else if(c==1) {
                            p6b.setIcon(S8);
                        }
                    }
                } else if(players[d][c].contains ("S9")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(S9);
                        } else if(c==1) {
                            p1b.setIcon(S9);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(S9);
                        } else if(c==1) {
                            p2b.setIcon(S9);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(S9);
                        } else if(c==1) {
                            p3b.setIcon(S9);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(S9);
                        } else if(c==1) {
                            p4b.setIcon(S9);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(S9);
                        } else if(c==1) {
                            p5b.setIcon(S9);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(S9);
                        } else if(c==1) {
                            p6b.setIcon(S9);
                        }
                    }
                } else if(players[d][c].contains ("S10")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(S10);
                        } else if(c==1) {
                            p1b.setIcon(S10);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(S10);
                        } else if(c==1) {
                            p2b.setIcon(S10);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(S10);
                        } else if(c==1) {
                            p3b.setIcon(S10);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(S10);
                        } else if(c==1) {
                            p4b.setIcon(S10);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(S10);
                        } else if(c==1) {
                            p5b.setIcon(S10);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(S10);
                        } else if(c==1) {
                            p6b.setIcon(S10);
                        }
                    }
                } else if(players[d][c].contains ("SJ")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(SJ);
                        } else if(c==1) {
                            p1b.setIcon(SJ);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(SJ);
                        } else if(c==1) {
                            p2b.setIcon(SJ);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(SJ);
                        } else if(c==1) {
                            p3b.setIcon(SJ);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(SJ);
                        } else if(c==1) {
                            p4b.setIcon(SJ);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(SJ);
                        } else if(c==1) {
                            p5b.setIcon(SJ);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(SJ);
                        } else if(c==1) {
                            p6b.setIcon(SJ);
                        }
                    }
                } else if(players[d][c].contains ("SQ")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(SQ);
                        } else if(c==1) {
                            p1b.setIcon(SQ);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(SQ);
                        } else if(c==1) {
                            p2b.setIcon(SQ);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(SQ);
                        } else if(c==1) {
                            p3b.setIcon(SQ);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(SQ);
                        } else if(c==1) {
                            p4b.setIcon(SQ);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(SQ);
                        } else if(c==1) {
                            p5b.setIcon(SQ);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(SQ);
                        } else if(c==1) {
                            p6b.setIcon(SQ);
                        }
                    }
                } else if(players[d][c].contains ("SK")) {
                    if(d==0){
                        if(c==0) {
                            p1a.setIcon(SK);
                        } else if(c==1) {
                            p1b.setIcon(SK);
                        }
                    } else if(d==1) {
                        if(c==0) {
                            p2a.setIcon(SK);
                        } else if(c==1) {
                            p2b.setIcon(SK);
                        }
                    } else if(d==2) {
                        if(c==0) {
                            p3a.setIcon(SK);
                        } else if(c==1) {
                            p3b.setIcon(SK);
                        }
                    } else if(d==3) {
                        if(c==0) {
                            p4a.setIcon(SK);
                        } else if(c==1) {
                            p4b.setIcon(SK);
                        }
                    } else if(d==4) {
                        if(c==0) {
                            p5a.setIcon(SK);
                        } else if(c==1) {
                            p5b.setIcon(SK);
                        }
                    } else if(d==5) {
                        if(c==0) {
                            p6a.setIcon(SK);
                        } else if(c==1) {
                            p6b.setIcon(SK);
                        }
                    }
                }}}

for(int d=0;d我首先将变量
p1a
通过
p6b
替换为一个“小部件”数组…或任何它们是什么。然后重构数组索引以获得要设置图标的小部件。

我首先将变量
p1a
通过
p6b
替换为一个“小部件”数组…或其他任何内容。然后重构以索引数组以获取要设置图标的小部件。

因此,您正在对对象调用setIcon(),并传入一个参数。剩下的代码只是决定哪个对象和哪个参数

如果您对要传递的参数做了一个决定,将其放入一个变量中,然后传递该变量,这样就不必重复获取另一个变量。我们称之为
currentIcon

我们对对象的组织方式了解不够。它们在(或可能在)吗数组?您可以决定哪个数组元素包含要调用该方法的对象,而不是决定要执行的代码。如果它们都在,比如说,
playersArray
,您可以决定哪个元素,使用
c
d
索引到该数组中,最后得到如下结果:

playersArray[c][d].setIcon(currentIcon);
因此,您正在对一个对象调用setIcon(),并传入一个参数。剩下的代码只是决定哪个对象和哪个参数

如果您对要传递的参数做了一个决定,将其放入一个变量中,然后传递该变量,这样就不必重复获取另一个变量。我们称之为
currentIcon

我们对对象的组织方式了解不够。它们在(或可能在)吗数组?您可以决定哪个数组元素包含要调用该方法的对象,而不是决定要执行的代码。如果它们都在,比如说,
playersArray
,您可以决定哪个元素,使用
c
d
索引到该数组中,最后得到如下结果:

playersArray[c][d].setIcon(currentIcon);

就我所见,你的
播放器
只是一个字符串数组。它应该是一个字符串数组

class Player {
   String name;
   Widget widget;
}
或者类似的,你应该有一个

Map<String, Icon> icons
地图图标
你会去哪里

for (Map.Entry<String, Icon> e : icons)
   if (players[d][c].name.contains(e.getKey()))
      players[d][c].widget.setIcon(e.getValue());
for(Map.Entry e:图标)
if(players[d][c].name.contains(e.getKey()))
players[d][c].widget.setIcon(e.getValue());

这样就可以取代你现在拥有的整个庞大的ifology级联。

就我所见,你的
player
只是一个字符串数组。应该是一个数组

class Player {
   String name;
   Widget widget;
}
或者类似的,你应该有一个

Map<String, Icon> icons
地图图标
你会去哪里

for (Map.Entry<String, Icon> e : icons)
   if (players[d][c].name.contains(e.getKey()))
      players[d][c].widget.setIcon(e.getValue());
for(Map.Entry e:图标)
if(players[d][c].name.contains(e.getKey()))
players[d][c].widget.setIcon(e.getValue());
这将取代你现在拥有的整个巨大的生命科学级联


因此,我正在制作这个扑克游戏,它只需要显示每个玩家都有哪些牌。我已经有了一个随机生成所有玩家牌的代码,我只是在这里将图标设置为正确的牌。我使用12个jLabel作为牌(p1a~p6b),玩家[d][c]包含生成的牌

首先,让我们选择一个合适的数据结构。为了类型安全,我们希望为卡提供一个专用类型。由于值集很小,并且在编译时已知,因此枚举是一个不错的选择:

enum Card {
    SA, S2, S3, S4, S5, S6, S7, S8, S9, S10, SJ, SQ, SK;
}
因此,我们可以将手表示为卡片阵列:

Card[][] hand;
为了展示,我们有

JLabel[][] labels;
我们还需要一个地方来保存每张卡的图标。如果卡本身知道它的图标,这是最简单的:

enum Card {
    SA, S2, S3, S4, S5, S6, S7, S8, S9, S10, SJ, SQ, SK;

    Icon icon = readIconFor(name());
}
我们可以这样做:

void show(Card[][] hands) {
    for (int playerId = 0; playerId < 2; playerId++) {
        for (int i = 0; i < 6; i++) {
            labels[playerId][i].setIcon(hand[playerId][i].icon);
        }
    }
}
void show(卡片[]手){
对于(int-playerId=0;playerId<2;playerId++){
对于(int i=0;i<6;i++){
标签[playerId][i].setIcon(手动[playerId][i].icon);
}
}
}

因此,我正在制作这个扑克游戏,它只需要显示每个玩家都有哪些牌。我已经有了一个随机生成所有玩家牌的代码,我只是在这里将图标设置为正确的牌。我使用12个jLabel作为牌(p1a~p6b),玩家[d][c]包含生成的牌

首先,让我们选择一个合适的数据结构。为了类型安全,我们希望为卡提供一个专用类型。由于值集很小,并且在编译时已知,因此枚举是一个不错的选择:

enum Card {
    SA, S2, S3, S4, S5, S6, S7, S8, S9, S10, SJ, SQ, SK;
}
因此,我们可以将手表示为卡片阵列:

Card[][] hand;
为了展示,我们有

JLabel[][] labels;
我们还需要一个地方来保存每张卡的图标。如果卡本身知道它的图标,这是最简单的:

enum Card {
    SA, S2, S3, S4, S5, S6, S7, S8, S9, S10, SJ, SQ, SK;

    Icon icon = readIconFor(name());
}
我们可以这样做:

void show(Card[][] hands) {
    for (int playerId = 0; playerId < 2; playerId++) {
        for (int i = 0; i < 6; i++) {
            labels[playerId][i].setIcon(hand[playerId][i].icon);
        }
    }
}
void show(卡片[]手){
对于(int-playerId=0;playerId<2;playerId++){
对于(int i=0;i<6;i++){
标签[playerId][i].setIcon(手动[playerId][i].icon);
}
}
}

这不是很长。这真的很长。用于if d==0…5开关情况。要使p1a…p5a的内容更好,请将其放入数组中,以便可以像pa[5]一样对其进行迭代当然有办法查找“pxx”组件?它们不在某个列表中吗?为什么不在结构化的Arraylist中填充它们,并根据Arraylist设置图标?所以我正在制作这个扑克游戏,它只需要显示每个玩家都有哪些牌。我已经有了一个随机生成所有玩家牌的代码,我只是我在这里设置了正确的卡片图标。我使用了12个jlabel作为卡片(p1a~p6b),玩家[d][c]包含生成的卡片。这不是很长。这真的很长。用于if d==0…5开关情况。要使用p1a…p5a制作东西,最好将其放入一个数组中,这样你就可以像pa[5]一样迭代它当然有办法查找“pxx”组件吗?它们不在列表中吗