0

多次元文字列配列をバブルソートしたいのですがうまくいかないようです

public class Array {
    public static void main( final String args[] ) {
        final String[][] arrDataIn = 
        {
            { "abc", "9", "5" },
            { "xyz", "3", "4" },
            { "lmn", "7", "3" },
            { "hij", "1", "3" }
        };

        final Array bs = new Array();

        final String arrSorted[][] = bs.sort( arrDataIn, 0, 1 );
        for ( int y = 0; y < arrSorted.length; y++ ) {
            System.out.println( "Printing Row Number :" + y );

            for ( int z = 0; z < arrSorted[y].length; z++ )
                System.out.println( "Value : " + arrSorted[y][z] );
        }
    }

    public String[][] sort( final String arrDataIn[][], final int iCol, final int iOrder ) {
        final String arrTmp[] = new String[ arrDataIn[0].length ];

        for ( int z = 0; z < arrDataIn.length; z++ ) {
            for ( int i = 0; i < arrDataIn.length - ( z + 1 ); i++ ) {
                if ( arrDataIn[i].compareTo( arrDataIn[i + 1] ) < 0 ) {
                    for ( int j = 0; j < arrDataIn[i].length; j++ ) {
                        arrTmp[j] = arrDataIn[i][j];
                        arrDataIn[i][j] = arrDataIn[i + 1][j];
                    }

                    for ( int m = 0; m < arrTmp.length; m++ )
                        arrDataIn[i + 1][m] = arrTmp[m];
                } else if ( arrDataIn[i].compareTo( arrDataIn[i + 1] ) < 0 ) {
                    for ( int j = 0; j < arrDataIn[i].length; j++ ) {
                        arrTmp[j] = arrDataIn[i][j];
                        arrDataIn[i][j] = arrDataIn[i + 1][j];
                    }

                    for ( int m = 0; m < arrTmp.length; m++ )
                        arrDataIn[i + 1][m] = arrTmp[m];
                }
            }

        }

        return arrDataIn;
    }
}

出力エラー ショー:

error: cannot find symbol
if (arrDataIn[i].compareTo(arrDataIn[i+1])<0)
                ^
  symbol:   method compareTo(String[])
  location: class String[]
error: cannot find symbol
else if (arrDataIn[i].compareTo(arrDataIn[i+1])<0)
                     ^
  symbol:   method compareTo(String[])
  location: class String[]

私はそれを次のように変更しようとします:

if (arrDataIn[i][iCol] > arrDataIn[i+1][iCol] && (iOrder == 0))

else if (arrDataIn[i][iCol] < arrDataIn[i+1][iCol] && (iOrder == 1))

それはまだ同じエラーです

4

1 に答える 1

2

arrDataIn[i]は文字列配列でありcompareTo()、配列オブジェクトにメソッドはありません

まず、自分が何をしたいのかを明確にする必要があります。おそらく、配列を辞書順でソートしたいでしょう

from:
  {
    { "2", "4", "5" }, // if possible
    { "3", "1" },
    { "2", "4" }
  }
to:
  {
    { "2", "4" },
    { "2", "4", "5" },
    { "3", "1" }
  }

compareTo() の説明compareTo( String[] sa1, String[] sa2 )に従ってメソッドを実装するだけです。

于 2012-04-25T09:11:40.067 に答える