2016-07-30 8 views
-1

私はライブラリにEbooksを追加し、さまざまな情報を表示するEbookプログラムを作成しています。 ISBNを検証するための有効なステートメントの作成など、私がまだ取り組んでいるプログラムの部分がありますが、後でそれを保存しています。今は単にEbookオブジェクトを作成してそれを自分のeBook配列に追加しようとしています。しかし、私がEbookLibraryTestでaddEbookを呼び出そうとすると、ebook1.addEbook(...)の行に「シンボルが見つかりません」というメッセージが表示されます。他の2つのクラスがコンパイルされているので混乱しています。メソッドを正しく呼びますか?もしそうなら、このエラーの原因となっている他の問題は何ですか?スコープの問題、複数のクラス

public class Ebook 
{ 
    private String author = ""; 
    private String title = ""; 
    private double price = 0; 
    private int isbn = 0; 


    public Ebook(String author, String title, double price, int isbn) 
    { 
     this.author = author; 
     this.title = title; 
     this.price = price; 

     if (isbn > 0) 
     this.isbn = isbn; 

     else 
      isbn = 0; 
    } 
     public void setPrice(double price) 
     { 
      if (price < 0) 
      { 
        System.out.println("Invalid price"); 
      } 

      else 
       this.price = price; 
     } 
     public double getPrice() 
     { 

      if (price < 0) 
      { 
       System.out.println("Invalid price"); 
       price = 0.0; 
       return price; 
      } 
      else 
       this.price = price; 
       return price; 


     } 
     public void setAuthor(String theAuthor) 
     { 
      this.author = theAuthor; 
     } 
     public String getAuthor() 
     { 
      return author; 
     } 
     public void setIsbn(int isbn) 
     { 
      if (isbn > 0) 
      { 
       this.isbn = isbn; 
      } 
      else 
       isbn = 0; 
     } 
     public int getIsbn() 
     { 
      if (isbn > 0) 
      { 
       this.isbn = isbn; 
       return isbn; 
      } 
      else 
      System.out.println("Invalid isbn"); 
          isbn = 0; 
      return isbn; 
     } 
     public void setTitle(String title) 
     { 
      this.title = title; 
     } 
     public String getTitle() 
     { 

      return title; 
     } 
     public String toString() 
     { 
      return String.format("The author is %s, the title is %s, the price is %f, the isbn is%d,", 
      author,title,price,isbn); 
     } 
} 
public class EbookLibrary 
{ 
    private int count = 0; 
    private double total_cost = 0.0; 

    Ebook[] ebooks = new Ebook[25]; 

    public EbookLibrary() 
    { 

    } 
    public int getCount() 
    { 
     return count; 
    } 
    public double getCost() 
    { 
     return total_cost; 
    } 
    public String toString() 
    { 
     return String.format("The count is %d, the total cost is %f,", count, total_cost); 
    } 
     public void addEbook(String theAuthor, String aTitle, double thePrice, int theIsbn) 
     { 

      Ebook anEbook = new Ebook("blah", "thing", 1.0, 1); 
      for (int counter = 0; counter < ebooks.length; counter++) 
      { 

      ebooks[counter] = anEbook; 
      count++; 
      price += total_cost; 
      } 

     } 
} 
public class EbookLibraryTest 
{ 
    public static void main(String[] args) 
    { 
     Ebook ebook1 = new Ebook("Tom Sawyer", "The Title", 77.0, 33); 
     Ebook ebook2 = new Ebook("Thing Do", "What What", 45.0, 15); 
     Ebook ebook3 = new Ebook("Stephen King","The Thing",1.1, 7); 
     Ebook ebook4 = new Ebook("Robert","A Title", 1.0, 1); 
     Ebook ebook5 = new Ebook("Tom","Bad Title", 33.1, 17); 
     Ebook ebook6 = new Ebook("Bob", "lol", 25.0, 15); 

     ebook1.addEbook("Tom Sawyer", "The Title", 77.0, 33); 


    } 
} 
+1

あなたはライブラリではなく、他の電子ブックに電子ブックを追加します。 .. –

+0

これらのクラスはすべて1つのファイルにありますか?コードを適切にフォーマットしてください。 –

+0

はい、そうです。ごめんなさい。複数のクラスの正しい形式は何ですか? – srmjr

答えて

3

あなたはEbookLibraryでは、ないEbook方法addEbook()を定義しました。ただし、Ebookオブジェクトで呼び出そうとしています。

はちょうどこのようなあなたのライブラリーオブジェクトのメソッドを呼び出し、それが動作するはずです:ebookAuthorebookTitleebookPriceebookIsbnを宣言し、このコードのスニペットの前に割り当てられていると仮定すると、

EbookLibrary myLibrary = new EbookLibrary(); 
myLibrary.addEbook(ebookAuthor, ebookTitle, ebookPrice, ebookIsbn); 

あなたは、単にこのようにそれを使用することを可能にすることになる、あなたのライブラリーに、既存の電子ブックを追加するaddEbook()メソッドをオーバーロードすることができます

myLibrary.addEbook(ebook1); 
+0

このメソッドがEbookオブジェクトではなくいくつかの文字列を受け取る点を除いて、正しいです。 –

+0

@ cricket_007これは、OPが複数の実装に異なる入力を提供する必要があることを意味します。 –

+0

@MeikVtuneメソッドがオーバーロードされているか、メソッドを書き直すだけです。 –