1

私にはプロジェクトがあり、以前に抱えていた問題に再び直面しています。

このテスターファイルが提供されています。編集しないでください。この行に注目してほしい:

System.out.println(bb) ;

オブジェクトを正しく印刷しますか?

import java.util.Arrays ;
/**
   Presents some problems to the BillBoard class.
 */
public class BillboardTester
{
    public static void main(String[] args) 
    {
    int[] profits = new int[]{1, 2, 3, 1, 6, 10} ;
    int k = 2 ;
    System.out.println("Profits: " + 
               Arrays.toString(profits) + "   k = " + k)  ;
    Billboard bb = new Billboard(profits, k) ;
    System.out.println("Maximum Profit = " + bb.maximumProfit()) ;
    System.out.println(bb) ;

    k = 3 ;
    profits = new int[]{7, 4, 5, 6, 1, 7, 8, 9, 2, 5} ;
    System.out.println("Profits: " + 
               Arrays.toString(profits) + "   k = " + k)  ;
    bb = new Billboard(profits, k) ;
    System.out.println("Maximum Profit = " + bb.maximumProfit()) ;
    System.out.println(bb) ;
    }
}

次に、オブジェクトを印刷することで、次の結果が期待されます。

Billboards removed (profit): 3(1) 0(1) => profit loss of 2
total value of billboards = 23
remaining maximum profit = 21

実際の Billboard クラスでどのメソッドを作成する必要があるのか​​ わからないので、これを印刷できます。何か提案はありますか?その特定の問題の解決策ではなく、この背後にあるロジックを知りたい.

4

2 に答える 2

4

メソッドをオーバーライドしtoStringます。

クラスのインスタンスを出力するたびに、toStringメソッドが呼び出されます。オーバーライドしない場合は、Object'sクラスが使用され、フォームtoStringを持つ表現が返されます。type@someNumber

独自の表現を印刷するには、それをオーバーライドするだけで、の実装toStringが呼び出されます。

@Override
public String toString() {
    return this.getProfit();
}

それに応じて、返される文字列を変更できます。あなたが何であるかはわかりませんkが、それをあなたのに含めることもできますreturned string

于 2012-11-13T18:25:48.243 に答える
4

メソッドをオーバーライドしtoStringます。Objectオブジェクトの印刷は、クラスで定義されているそのメソッドに依存しています。これをオーバーライドすることで、その実装の代わりに実装が使用されます。

printlnのドキュメントを検討してください。

オブジェクトを印刷してから、行を終了します。このメソッドは、最初にString.valueOf(x)を呼び出して、印刷されたオブジェクトの文字列値を取得し、次にprint(String)を呼び出してからprintln()を呼び出すかのように動作します。

println誰がのメソッドString.valueOf(x)を呼び出すかに依存します。xtoString

例:

public String toString() {
    return "Billboards removed (profit):" + someParam + " => profit loss of " +
           profitLoss + "\ntotal value of billboards = " + totalValue + 
           "\nremaining maximum profit = " + remainingProfit;
}

簡単に言うとString、コンテンツを「説明」するオブジェクトの表現を返すだけです。Personオブジェクトがある場合はtoString、おそらく次のようになります。

"Name: " + personName + "Email: " + personEmail.
于 2012-11-13T18:25:57.587 に答える