web-dev-qa-db-fra.com

Matrices avec différents types de données, à savoir des chaînes et des entiers. (Objectorientend)

Par exemple j'ai

3 livres: Booknumber (int), Booktitle (string), Booklanguage (string), Bookprice (int).

maintenant je veux avoir un tableau appelé books[3][4].

Je reçois les données que j'ai définies via setBooknumber comme ceci:
Book1.getBooknumber(), Book1.getBooktitle(),...,Book3.getBookprice().

Maintenant, comment est-ce que je réalise ce books[3][4] array. Je ne peux pas l'appeler String books[][] = new String [3][4]. Parce que je ne peux pas obtenir Booknumber (int).

Je ne veux pas que Booknumber soit String, ni Bookprice. Comment je le réalise, s'il vous plait?

Maintenant pour élaborer plus loin.

J'ai 2 cours.

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

//constructor

//get

//set
}

et

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

puis déclarez votre tableau comme:

Book[] books = new Book[3];

EDIT: En réponse à la confusion de O.P., Book devrait être un objet, pas un tableau. Chaque livre doit être créé seul (via un constructeur correctement conçu), puis ajouté au tableau. En fait, je n'utiliserais pas un tableau, mais un ArrayList. En d'autres termes, vous essayez de forcer des données dans des conteneurs qui ne conviennent pas à la tâche à accomplir. 

J'oserais dire que 50% de la programmation consiste à choisir la bonne structure de données pour vos données. Les algorithmes suivent naturellement s’il existe un bon choix de structure.

Lorsque cela est correctement effectué, votre classe d'interface utilisateur se présente comme suit: Éditer: les génériques sont ajoutés à l'extrait de code suivant.

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

etc.

maintenant, vous pouvez utiliser l'interface Collections et faire quelque chose comme:

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

Remarquez la répétition de Book dans Booknumber (int), Booktitle (string), Booklanguage (string), Bookprice (int)- it crie pour un type de classe.

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

Maintenant, vous pouvez simplement avoir:

Book[] books = new Books[3];

Si vous voulez des tableaux, vous pouvez le déclarer en tant que tableau d'objets dans lequel vous insérez Integer et String:

Object books[3][4]
3
Chandra Patni

utilisez le type d'objet ie cahiers d'objets [3] [4];

1
GuruKulki

Pourquoi ne pas créer une classe Livre avec les propriétés: Nombre, Titre et Prix. Puis stockez-les dans un tableau à une dimension? De cette façon, au lieu d'appeler

Book[i][j] 

..pour obtenir le titre de vos livres, appelez

Book[i].Title

Il me semble que ce serait un peu plus facile à gérer et plus convivial au code.

0
George Johnston