有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用java对2d字符串数组进行排序?

我使用enum和ArrayList创建了一组卡片,并使用以下代码将ArrayList转换为数组:

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

然后我继续将对象数组转换为字符串数组:

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

现在我想使用13列和4行对我的卡片的输出进行排序,但是,我在使用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);
    }
}

共 (1) 个答案

  1. # 1 楼答案

    更改此行:

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

    为此:

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

    那就行了