-5

電子書籍「Javaプログラミング入門」から勉強を続けています。その電子書籍では、次の方法を使用しています。

/**
 * This method scans the array of cards in a for loop.
 */
public void getDetialsOfCards() {
    // Declare a local variable.
    MembershipCard card = null;

    // note the use of the instanceof operator
    for (int i = 0; i < noOfCards; i++) {
        if (cards[i] instanceof DvdMembershipCard) {
            card = cards[i];
            System.out.println("This is a DVD card with " + getNoOnLoan()
                    + " DVDs currently on loan.");

        } else if (cards[i] instanceof GameMembershipCard) {

            card = cards[i];
            System.out.println("This is a games card with " +
                    getNoOnLoan() + " CDs currently on loan");

        } else {
            System.out.println("Neither type of card.");

        }
    } // End of for loop.

}

これが私の主な方法です:

public class CompundIfElsegetDetialsOfCards {

    // private static int noOfCards = 2;
    private static int NoOnLoan;
    private static Object[] cards;

    private static DvdMembershipCard[] dvd = new DvdMembershipCard[6];
    private static GameMembershipCard[] game = new GameMembershipCard[6];
    private static MembershipCard card;

    public static void getDetialsOfCards() {
        // Declare a local variable.

        int noOfCards = 6;

        // note the use of the instanceof operator
        for (int i = 0; i < noOfCards; i++) {
            if (cards[i] instanceof DvdMembershipCard) {
                card.equals(cards[i]);

                System.out.println("This is a DVD card with " + getNoOnLoan()
                        + " DVDs currently on loan.");

            } else if (cards[i] instanceof GameMembershipCard) {
                card.equals(cards[i]);

                System.out.println("This is a games card with " +
                        getNoOnLoan() + " CDs currently on loan");

            } else {
                System.out.println("Neither type of card.");

            }

        } // End of for loop.

    }

    public static void main(String[] args) {
        CompundIfElsegetDetialsOfCards.getDetialsOfCards();
    }

    private static int getNoOnLoan() {

        System.out.println("jumlah Loan ");
        return NoOnLoan;
    }

    private static class MembershipCard {

        public MembershipCard() {

        }
    }

    private int i;

    private static class DvdMembershipCard {
        public DvdMembershipCard() {

        }
    }

    private static class GameMembershipCard {
        public GameMembershipCard() {

        }
    }
}

コードは正常にコンパイルされますが、出力はありません。これを解決するために何を追加する必要がありますか?

4

2 に答える 2

1

例外を受け取っていませんか?

あなたはjava.lang.NullPointerException以下の行で受け取ります

if (cards[i] instanceof DvdMembershipCard)

static Object[] cards;Nullポインタ例外を受け取るパラメータにオブジェクトを割り当てていません。

于 2012-12-12T02:56:00.780 に答える
1

配列を要素で埋めることは決してありません。instanceof一致するものはありませんnull...コード全体をスキップします(例外なし)。

card.equals(cards[i])代わりにcard = cards[i]、新しい値が割り当てられていない場合に呼び出すコードの別の欠陥(2番目のブロック) 。

于 2012-12-12T02:57:20.580 に答える