具有不同数据类型的数组,即字符串和整数。 (Objectorientend)

时间:2010-01-06 19:21:59

标签: java arrays object types

例如我

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成为String也不是Bookprice。我怎么知道呢,

现在进一步阐述它。

我有两节课。

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

//constructor

//get

//set
}

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
 }
}

5 个答案:

答案 0 :(得分:28)

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);

现在您可以使用Collections界面并执行以下操作:

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);

答案 1 :(得分:3)

注意BookBooknumber (int), Booktitle (string), Booklanguage (string), Bookprice (int)的重复 - 它会为类类型而尖叫。

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

现在你可以简单地拥有:

Book[] books = new Books[3];

如果你想要数组,你可以将它声明为对象数组,插入IntegerString

Object books[3][4]

答案 2 :(得分:2)

@NoCanDo:您无法创建具有不同数据类型的数组,因为java仅支持具有特定数据类型或对象的变量。当你创建一个数组时,你将各种类似的变量拉到一起 - 几乎就像一个扩展变量。因此,所有变量必须是相同的类型。 Java无法区分变量的数据类型,除非您告诉它它是什么。例如:int告诉您声明的所有变量都是数据类型int。你可以做的是创建3个具有相应信息的数组。

int bookNumber[] = {1, 2, 3, 4, 5};
int bookName[] = {nameOfBook1, nameOfBook2, nameOfBook3, nameOfBook4, nameOfBook5} // etc.. etc..

现在,单个索引号为您提供该书的所有信息。例如:索引编号为0([0])的所有数组都包含第1册的信息。

答案 3 :(得分:1)

使用对象类型 即对象书籍[3] [4];

答案 4 :(得分:0)

为什么不创建一个具有属性的类 Book :Number,Title和Price。然后将它们存储在一维数组中?这样,而不是调用

Book[i][j] 

..获取您的图书标题,请致电

Book[i].Title

对我而言似乎更易于管理和代码友好。