0

説明を簡単にするために、プログラムの概要を簡単に説明します。「オンライン書店」を作ることになっています。抽象クラス Item と 2 つのサブクラス Apparel と Textbooks があります。基本的に、ユーザーはまずストアに教科書かアパレルを「入れ」、在庫がある場合はそのアイテムを「販売」します。

主に、「ストア」のように機能する、Textbook と Apparel の両方のタイプのオブジェクトを保持する Item (abstract) の配列を作成しました。配列にアクセスしようとすると、私の問題が発生します。

アイテムを「販売」する場合、ユーザーは、たとえば、購入したい本のタイトルを入力します。このタイトルが「在庫あり」であることを検証する必要があります (つまり、Item 配列内)。

これは本を購入するための私の方法です (i はストア内のアイテムの数、store は抽象配列であり、ご覧のように完全ではありません。if ステートメントで立ち往生しています)

public static void buyBook(Item[] store, int i)
{
    TextBook book = new TextBook();

    String title;
    title = JOptionPane.showInputDialog("Book title: ");

    for(int j = 0; j < i; j++)
    {
        if(store[j] instanceof TextBook)
        {
            if()
        }
}

私の考えは、タイトル(ユーザーの入力)をストア内の教科書タイプ(抽象配列)のタイトルと比較することです。間違っていることはわかっていますが、次のようなものです。

store[j].getTitle().compareTo(title)

しかし、もちろん store[j] は getTitle にアクセスできません (サブクラスの TextBook にあるため)

そして今、私は完全に立ち往生しています。いくつかのガイダンスをいただければ幸いです。

4

1 に答える 1

3

ダウンキャストはあなたの友達です。((TextBook)store[j]).getTitle().compareTo(title)また、for-each を使用しないのはなぜですか?for (Item item : store) if (item instanceof TextBook) ...

于 2012-05-04T21:54:02.610 に答える