it-roy-ru.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 был String и 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
 }
}
9
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];

Правка: В ответ на путаницу О.П. Книга должна быть объектом, а не массив. Каждая книга должна быть создана сама по себе (через правильно разработанный конструктор) и затем добавлена ​​в массив. На самом деле, я бы не использовал массив, но ArrayList. Другими словами, вы пытаетесь поместить данные в контейнеры, которые не подходят для выполняемой задачи.

Я бы рискнул, что 50% программистов выбирают правильную структуру данных для ваших данных. Алгоритмы естественным образом следуют, если есть хороший выбор структуры.

Когда все сделано правильно, ваш класс пользовательского интерфейса будет выглядеть так: Edit: Generics добавлен в следующий фрагмент кода.

...
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);
28
Chris Cudmore

Обратите внимание на повторение 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
Chandra Patni

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

1
GuruKulki

Почему бы не создать класс Book со свойствами: Number, Title и Price. Затем хранить их в одномерном массиве? Таким образом, вместо звонка

Book[i][j] 

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

Book[i].Title

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

0
George Johnston