For循环交换数组中的两个元素

时间:2019-04-18 08:48:34

标签: java arrays

让我们说我在一个纸牌中有一个随机排列的纸牌

  

S,H,D,C是西服,而1,2,3 ....是排名

     

FYI,T表示10,所以ST表示Spade为10。

HK  C2  C8  CQ  S3  SJ  S4  D2  HQ  H9  HT  DT  ST  
H2  H3  SA  CA  HJ  S9  S6  S8  H8  H6  C7  D7  CJ  
H7  C9  DQ  DA  C5  D4  D6  D9  SK  DJ  CK  DK  SQ  
D5  HA  D3  S2  H4  S5  C3  D8  CT  S7  C6  C4  H5

我想根据它的西装和等级对其进行排序,以使其成为

S2  S3  S4  S5  S6  S7  S8  S9  ST  SJ  SQ  SK  SA  
H2  H3  H4  H5  H6  H7  H8  H9  HT  HJ  HQ  HK  HA  
D2  D3  D4  D5  D6  D7  D8  D9  DT  DJ  DQ  DK  DA  
C2  C3  C4  C5  C6  C7  C8  C9  CT  CJ  CQ  CK  CA 

到目前为止,我尝试使用Array.sort方法首先将其更改为

Arrays.sort(arr); 

C2  C3  C4  C5  C6  C7  C8  C9  CA  CJ  CK  CQ  CT  
D2  D3  D4  D5  D6  D7  D8  D9  DA  DJ  DK  DQ  DT  
H2  H3  H4  H5  H6  H7  H8  H9  HA  HJ  HK  HQ  HT  
S2  S3  S4  S5  S6  S7  S8  S9  SA  SJ  SK  SQ  ST 

接下来,在我的swap方法中,我实现了一个for循环来交换数组的第8个元素和第12个元素。我的问题是我看到一些公式,因此在每一行中,我都必须交换数组的第8和第12个元素。但是,我的for循环只能交换第一行,如下所示:

          int x = 8;
          int y = 12;

          for(int k = 0;  k < 13 ;k++)
          {
              String temp = arr[x];
              arr[x] = arr[y];
              arr[y] = temp;
          }

这样,我可以将第一行交换为:

C2  C3  C4  C5  C6  C7  C8  C9  CT  CJ  CK  CQ  CA  

我在想,由于每套西装都有13张卡片(例如,西装C将获取数组的0-12索引,西装D将获取数组的13-25索引..),我需要使整数x = 8和y = 12,然后在每次成功交换后将它们增加13,以便我也可以交换其他行。但是,我被困住了,无法找到一种方法。

因此通过添加另一个for循环:


              for(int k = 0;  k < 13 ;k++)
              {
                  String temp = str[i+13];
                  str[i+13] = str[j+13];
                  str[j+13] = temp;
              }

我能够将元素的第二行更改为

D2  D3  D4  D5  D6  D7  D8  D9  DT  DJ  DK  DQ  DA  

是否有更动态的方式来做到这一点,例如嵌套for循环?谢谢

0 个答案:

没有答案