0

別のクラスのメソッドを使用できません。文字列の配列をバブルソートでソートするには、別のメソッドを呼び出すメソッドを呼び出す必要があります。

コード:

    /**
 * My pride and joy, the bubble sort.
 * @return 
 */
public void BubbleSort(){

    boolean run = true;
    String temp;

    while (run)
    {
        run = false;

            for(int i = 0; i <stringArray.length - 1; i++)
            {

                if(stringArray[i].compareToIgnoreCase( stringArray[i+1]) > 0)
                {

                    temp = stringArray[i];

                    stringArray[i] = stringArray[i+1];

                    stringArray[i+1] = temp;

                    run = true;
                }// end of if
            }// end of for
    }// end of while

    System.out.println(stringArray);


}// end of BubbleSort




public void PrintSortedString(){
    BubbleSort();
}

それが2つの方法です。

ドライバークラスから呼び出すとき(メソッドが別のクラスにあることに注意してください)、私はそれを次のように呼び出します

stringUtility.PrintSortedString();

入力は::

    Please enter names:
z
a
Your names:
[z, a]
[Ljava.lang.String;@4efe03b3 // this is where it should priont [a,z]

私は何を間違えましたか?

4

2 に答える 2

3

あなたが見ているもの

[Ljava.lang.String;@4efe03b3

の結果です

System.out.println(stringArray);

その結果を内部的に呼び出しstringArray.toString()て出力します。

この動作はすべてのオブジェクトに適用されます。カスタム文字列メッセージが必要な場合は、toString()に依存するのではなく、クラスにカスタム メソッドを実装させる必要がありますObject#toString()。クラスを変更することはできないため、String[]自分で要素を反復処理する必要があります。

Arraysまたは、 JDK の一部であるクラスに依存することもできます

System.out.println(Arrays.toString(stringArray));
于 2013-09-26T02:59:09.357 に答える
0

それ以外の

System.out.println(stringArray);

使ってみて...

System.out.println(Arrays.toString(stringArray));

1つ目は配列に関する情報の出力で、2つ目はコンテンツの出力です...

更新しました

メソッドがソート操作の結果を返すようにしたい場合は、そうするメソッドを定義する必要があります...

public String[] BubbleSort(){
    /*...*/
    return stringArray;
}// end of BubbleSort

public String[] PrintSortedString(){
    return BubbleSort();
}

これにより、使用できるようになりますSystem.out.println(Arrays.toString(stringUtility.PrintSortedString())

また、Java プログラミング言語のコード規則を読む時間を取る必要があります。

于 2013-09-26T02:59:07.327 に答える