簡體   English   中英

如何使用 java 對二維字符串數組進行排序?

[英]How to sort a 2d String array using java?

我使用枚舉和 ArrayList 創建了一副紙牌,使用以下代碼將 ArrayList 轉換為數組:

private void listToArray(ArrayList<PlayingCard> cardList, PlayingCard[] cardArray)
{
    cardArray = cardList.toArray(cardArray);
}

然后我繼續將 object 數組轉換為字符串數組:

private void transfer(PlayingCard[] cardArray, String[] strArray)
{
    for (int k = 0; k < strArray.length; k ++)
    {
        strArray[k] = cardArray[k].toString(); 
    }
 }

現在我想使用 13columns 和 4rows 對我的卡片的 output 進行排序,但是,我使用我擁有的 sort2D 方法遇到了 ArrayIndexOutOfBoundsException。

private void transfer2D(String[][] twoD, String[] strArray)
{
    for (int a = 0; a < this.rows ; a++)
    {
        for (int b = 0; b < this.MAXC; b++)
        {
            twoD[a][b] = strArray[(a*(twoD[a].length)+b];
        }
    }

}
private void sort2D(String[][] twoD)
{
    for (int c = 0; c < twoD.length ; c++)
    {
        for (int d = 0; d < twoD.length - 1; d++)
        {
            if(twoD[d][this.MAXC].compareTo(twoD[d + 1][this.MAXC]) > 0)
            {
                String[] tempArray = new String[twoD[d].length];
                tempArray = twoD[d];
                twoD[d] = twoD[d + 1];
                twoD[d+1] = tempArray;
            }
        }
    }
}
private void print2D(String[][] strArray)
{
    for (int e = 0; e < strArray.length; e++)
    {
        System.out.println(strArray);
    }
}

更改此行:

for (int d = 0; d < twoD.length - 1; d++)

對此:

for (int d = 0; d < twoD[c].length - 1; d++)

然后它將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM