Например, я имею
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. Как я понимаю это?
Теперь далее разрабатывать его.
У меня есть 2 класса.
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
}
}
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];
]
[]EDIT: В ответ на путаницу О.П., Книга должна быть объектом, а не массивом. Каждая книга должна быть создана сама по себе (через правильно спроектированный конструктор) и затем добавлена в массив. На самом деле, я бы использовал не массив, а ArrayList. Другими словами, вы пытаетесь форсировать данные в контейнеры, которые не подходят для данной задачи. [
] [] Я бы рискнул предположить, что 50% программистов выбирают подходящую структуру данных для ваших данных. Алгоритмы, естественно, следуют, если есть хороший выбор структуры.[
] []Когда все сделано правильно, вы получаете ваш класс интерфейса: Правка: Дженерики добавлены к следующему фрагменту кода.[
] [...
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);
] ] Обратите внимание на повторение [] 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]
] ] используйте тип объекта. т.е. книги объектов[3][4];[
]] Почему бы не создать класс [] Книга [] со свойствами: Номер, Название и Цена. Затем сохранить их в одномерном массиве? Таким образом, вместо вызова[
] [Book[i][j]
]
[]... чтобы получить название вашей книги, позвоните[
] [Book[i].Title
]
[]Мне кажется, что это будет немного более управляемо и удобно для кода.[
].