3

(以下の完全なコード) 特定の本を説明するクラスを作成する必要があるクラスのラボを提出しました。2つのことを行う方法がわかりませんでした。1. 誰かが 'pages' または 'suggestedRetailPrice' にゼロ未満の値を入力した場合、値をゼロに設定する必要があります。このコードでは、値が正の場合でも値は 0 に設定されます。の中に:


if ( pages <= 0 )
    {
        pages = 0;
    }

2 番目の「0」を別の数値に設定した場合のコードは次のようになります。


if ( pages <= 0 )
    {
        pages = 1;
    }

次に、「ページ」に入力したものの値は1になります。しかし、入力した値が負の数の場合にのみ1になるべきではありませんか? 私は自分が間違っていることを理解していません。

私が把握できなかった 2 番目のことは、コードの最後にあり、すべての情報を表示する必要がありました。先生は、その本が文庫本かどうかを「真」または「偽」ではなく「はい」または「いいえ」で表示するようにと言われました。どうすればいいですか?次のように if/else ステートメントを入れてみました: System.out.println("Paperback : " + if (paperback = true) {Yes} if (paperback = false) {no}; )

うまくいきませんでした、理解できません。以下のコード全体を参照してください。


public class Book {
    // Instance variables
    private String title;
    private String author;
    private int isbn;
    private int pages;
    private boolean paperback;
    private int suggestedRetailPrice;

    /**
     * Default contructor
     */
    public Book() {
        title = "";
        author = "";
        isbn = 0;
        pages = 0;
        paperback = false;
        suggestedRetailPrice = 0;
    }

    /**
     * book information
     */
    public Book(String whatIsTitle, String whoIsAuthor, int isbnCode,
            int numberOfPages, boolean isItPaperback,
            int theSuggestedRetailPrice) {
        title = whatIsTitle;
        author = whoIsAuthor;
        isbn = isbnCode;
        if (pages <= 0) {
            pages = 0;
        } else {
            pages = numberOfPages;
        }
        paperback = isItPaperback;
        if (suggestedRetailPrice <= 0) {
            suggestedRetailPrice = 0;
        } else {
            suggestedRetailPrice = theSuggestedRetailPrice;
        }
    }

    /**
     * @return title
     */
    public String getTitle() {
        return title;
    }

    /**
     * @return author
     */
    public String getAuthor() {
        return author;
    }

    /**
     * @return isbn
     */
    public int getIsbn() {
        return isbn;
    }

    /**
     * @return pages
     */
    public int getPages() {
        return pages;
    }

    /**
     * @return paperback
     */
    public boolean getPaperback() {
        return paperback;
    }

    /**
     * @return suggestedRetailPrice
     */
    public int getSuggestedRetailPrice() {
        return suggestedRetailPrice;
    }

    /**
     * title
     */
    public void setTitle(String whatIsTitle) {
        title = whatIsTitle;
    }

    /**
     * author
     */
    public void setAuthor(String whoIsAuthor) {
        author = whoIsAuthor;
    }

    /**
     * isbn code
     */
    public void setIsbn(int isbnCode) {
        isbn = isbnCode;
    }

    /**
     * number of pages
     */
    public void setPages(int numberOfPages) {
        if (pages <= 0) {
            pages = 0;
        } else {
            pages = numberOfPages;
        }
    }

    /**
     * is it paperback
     */
    public void setPaperback(boolean isItPaperback) {
        paperback = isItPaperback;
    }

    /**
     * suggested retail price
     */
    public void setSuggestedRetailPrice(int theSuggestedRetailPrice) {
        if (suggestedRetailPrice <= 0) {
            suggestedRetailPrice = 0;
        } else {
            suggestedRetailPrice = theSuggestedRetailPrice;
        }
    }

    /**
     * displays information
     */
    public void displayBook() {
        System.out.println("Title : " + title);
        System.out.println("Author : " + author);
        System.out.println("ISBN : " + isbn);
        System.out.println("Pages : " + pages);
        System.out.println("Paperback : " + paperback);
        System.out.println("Suggested price : " + suggestedRetailPrice);
    }
}
4

2 に答える 2

4

パラメータnumberOfPagesで設定する前に、ページの値を確認しています。

 title = whatIsTitle;
 author = whoIsAuthor;
 isbn = isbnCode;

 // pages is still at its initialzed value of 0 here.
 if ( pages <= 0 )
 {
     pages = 0;
 }
 else
 {
     pages = numberOfPages; // this will *never* be called
 } 

この順序を逆にします。または、パラメーター値を確認し、それを使用してページの値を設定します。

if (numberOfPages < 0) {
   pages = 0;
} else {
   pages = numberOfPages
}

2番目の質問では、isPaperbackと呼ばれる文字列を作成し、ペーパーバックが真の場合は出力文字列に「はい」文字列を設定し、そうでない場合は「いいえ」に設定し、必要なときにその文字列を表示します。それか、 System.out.println("yes") を if ブロックに入れ、ペーパーバックの値をテストしてください。

つまり、

if (paperback) {
   System.out.println(...);
} else {
   System.out.pringln(...);
}
于 2013-02-05T01:18:03.623 に答える
1

何をしようとしているのか少しわかりませんが、Book クラスで、パラメータが「numberOfPages」のときに「ページ」を使用していることに気付きました。やってみる

if(numberOfPages <= 0) pages = 0

また、三項演算子の使用方法を理解できれば、これをすべてきちんときれいにすることができますが、それはあなたに任せます。

印刷ステートメントに関しては、「if」を印刷の外側に取るので、そうなります。

if(paperback) System.out.println("Paperback: Yes")
else System.out.println("Paperback: no)

また、これは三項演算子のもう 1 つの優れたスポットです。

于 2013-02-05T01:35:41.983 に答える