web-dev-qa-db-ja.com

文字列と整数などの異なるデータ型の配列。 (Objectorientend)

たとえば、3冊の本があります:Booknumber (int)Booktitle (string)Booklanguage (string)Bookprice (int)

ここで、_books[3][4]_という配列が必要です。次のようにsetBooknumberを介して設定したデータを取得しています。
Book1.getBooknumber(), Book1.getBooktitle(),...,Book3.getBookprice().

どうすればこれを実現できますか:_books[3][4] array_。

_String books[][] = new String [3][4]_と呼べません。 Booknumber (int)を取得できないためです。 BooknumberもBookpriceも文字列にしたくありません。どうやって気づくの?

さらに詳しく説明します。私は本とbookUIの2つのクラスを持っています。

_public class book{
String Booktitle, Booklanguage;
int Booknumber, Bookprice;

//constructor

//get

//set
}
_

bookUI

_public class bookUI
{
 public static void main(String arg[])
 {
   book book1 = new book();
   book book2 = new book();
   book book3 = new book();

   book1.setBooktitle();
   ...
   book3.setBookprice();

   //Here I want to have books[3][4] Array. And gettin the data via book1.get...book3.get into the array
 }
}
_
12
Grumpy ol' Bear
public class Book
{
    public int number;
    public String title;
    public String language;
    public int price;

    // Add constructor, get, set, as needed.
}

次に、配列を次のように宣言します。

Book[] books = new Book[3];

編集:O.P.の混乱に対応して、Bookは配列ではなくオブジェクトである必要があります。各本はそれ自体で(適切に設計されたコンストラクターを介して)作成し、配列に追加する必要があります。実際、配列ではなくArrayListを使用します。つまり、現在のタスクに適さないコンテナにデータを強制しようとしています。

プログラミングの50%があなたのデータに適切なデータ構造を選択していると思います。構造の適切な選択がある場合、アルゴリズムは当然従います。

適切に完了すると、UIクラスは次のようになります。編集:次のコードスニペットにジェネリックが追加されました。

...
ArrayList<Book> myLibrary = new ArrayList<Book>();
myLibrary.add(new Book(1, "Thinking In Java", "English", 4999));
myLibrary.add(new Book(2, "Hacking for Fun and Profit", "English", 1099);

等.

これで、コレクションインターフェイスを使用して、次のようなことができます。

int total = 0;
for (Book b : myLibrary)
{
   total += b.price;
   System.out.println(b); // Assuming a valid toString in the Book class
}
System.out.println("The total value of your library is " + total);
29
Chris Cudmore

Booknumber (int), Booktitle (string), Booklanguage (string), Bookprice (int)でのBookの繰り返しに注意してください。クラス型を求める叫びです。

class Book {
  int number;
  String title;
  String language;
  int price;
}

今、あなたは単に持つことができます:

Book[] books = new Books[3];

配列が必要な場合は、オブジェクト配列として宣言し、IntegerおよびStringを挿入します。

Object books[3][4]
3
Chandra Patni

オブジェクトタイプ、つまりオブジェクトブックを使用します[3] [4]。

1
GuruKulki

数、タイトル、価格のプロパティを持つクラスBookを作成してみませんか。次に、それらを1次元配列に格納しますか?そのように呼び出すのではなく

Book[i][j] 

..本のタイトルを取得するには、

Book[i].Title

それはもう少し管理しやすく、コードフレンドリーであるように私には思えます。

0
George Johnston