例如我
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
}
}
答案 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)
注意Book
中Booknumber (int), Booktitle (string), Booklanguage (string), Bookprice (int)
的重复 - 它会为类类型而尖叫。
class Book {
int number;
String title;
String language;
int price;
}
现在你可以简单地拥有:
Book[] books = new Books[3];
如果你想要数组,你可以将它声明为对象数组,插入Integer
和String
:
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
对我而言似乎更易于管理和代码友好。