2017-10-08 3 views
4

はじめに:私はjavaとちょうど学ぶことにひどいです。トンを探して、答えを見つけることができませんでした。 arraylistsは使用できません。別の配列の選択elemntsで新しい配列を作成

私はブックオブジェクトの配列に読み込み、本棚のクラスを持っているなどのページのような具体的な本の中での情報が含まれていますBookクラス、著者、

を持っています。私は著者名を取り、その著者によって書かれたブック配列内のすべてのブックを見つけ出し、それらのブックの配列を返すメソッドを書く必要があります。

私の計画は、その著者による書籍の総数を見つけて、それを変数に格納することです。次に、そのサイズの新しい配列を作成します。ブック配列から要素を選択して新しい配列に配置する方法はわかりません。あなたが使用できない場合

public Book[] getBooksByAuthor(String author) { 
    return Arrays.stream(books) 
       .filter(b -> b.getAuthor().equals(author)) 
       .toArray(Book[]::new); 
} 
+0

これまでのところ、新しい配列を作成して新しい配列に要素を追加する必要があります。 – UnholySheep

+2

これまでのところ正しいです。 'count'変数を使って配列を作る方法を知っていますか? –

+0

予約[] newBooks =新しい予約[数];サイズカウントの新しい配列を作成します。 しかし、再度ループして新しい配列に値を代入すると、合っていないため空のインデックスが作成される可能性があります。 – Lambtron

答えて

4

のJava 8のストリームはあなたにこれを行うのはかなりエレガントな方法を提供している何

String booksFromAuthor = ""; 
for(final String book : books){ 
    if(book.equals(author)) 
     booksFromAuthor += book + "|"; 
} 
return booksFromAuthor.split("|"); 
+0

Java 8は今ではかなり古く、誰もが使用しているバージョンと見なすことができるので、「Java 8」ではなく「Java」と言います。 – Bohemian

+0

@ボヘミアンは真実ではありません。たとえば、私の学校(スイスの優れたエンジニアスクール)はまだJava 7を使用しています。 –

+0

あなたの学校がまだ6年前にリリースされたJavaのバージョンを使用していて、2.5年前に置き換えられた場合、@paul良い学校ではありません。非常に少数の雇用者がまだバージョン7にいるので、あなたの「良い」学校は、より多くの、あるいはより少ない失業可能なスキルを教えています。 – Bohemian

0

:それは正しいだ場合、私はこれまでのところ、わからない...

public Book[] getBooksByAuthor(String author) { 
    int count = 0; 
    String a = author; 

    for(int i = 0; i < books.length; i++){ 
     if(books[i].getAuthor().equals(a)){ 
      count += 1; 
     } 
    } 
1

私の最終的な結果:

配列は、あなたはそれをこの方法で行うことができます
public Book[] getBooksByAuthor(String author) { 
    int count = 0; 
    String a = author; 
    int iter = 0; 

    for(int i = 0; i < books.length; i++){ 
     if(books[i].getAuthor().equals(a)){ 
      count += 1; 
     } 
    } 
    Book[] newBooks = new Book[count]; 
    for (int i = 0; i < books.length; i++){ 
     if(books[i].getAuthor().equals(a)){ 
      newBooks[iter] = books[i]; 
      iter += 1; 

     } 
    } 
    return newBooks; 
} 
関連する問題