Массивы с различными типами данных т.е. строками и целыми числами. (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. Как я понимаю это?

Теперь далее разрабатывать его.

У меня есть 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
 }
}
10
задан Grumpy ol' Bear 6 January 2010 в 19:48
поделиться

4 ответа

[
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);
]
29
ответ дан 3 December 2019 в 14:18
поделиться
[

] Обратите внимание на повторение [] 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
ответ дан 3 December 2019 в 14:18
поделиться
[

] используйте тип объекта. т.е. книги объектов[3][4];[

]
1
ответ дан 3 December 2019 в 14:18
поделиться
[

] Почему бы не создать класс [] Книга [] со свойствами: Номер, Название и Цена. Затем сохранить их в одномерном массиве? Таким образом, вместо вызова[

] [
Book[i][j] 
] [

]... чтобы получить название вашей книги, позвоните[

] [
Book[i].Title
] [

]Мне кажется, что это будет немного более управляемо и удобно для кода.[

].
0
ответ дан 3 December 2019 в 14:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: