12
votes

Tableaux avec différents types de données, c'est-à-dire des cordes et des entiers. (Obsiorientend)

Par exemple, j'ai 3 livres: Booknumber (int) Code>, Booktitle (String) Code>, Booklanguage (String) Code>, Bookprice (int) Code>.

Maintenant, je veux avoir un tableau appelé livres [3] [4] code>. Je reçois les données que j'ai définies via SetBookNumber code> comme ceci:

book1.gebooknumber (), book1.gebooktitle (), ..., book3.gebookprice (). code> p>

Comment puis-je réaliser ce: Livres [3] [ 4] Array code>. P>

Je ne peux pas l'appeler String Livres [] [] = nouvelle chaîne [3] [4] code>. Parce que je ne peux pas obtenir booknumber (int) code> dans elle. Je ne veux pas que Booknumber soit une chaîne ni bookprice. Comment puis-je le réaliser, s'il vous plaît? P>

pour le développer davantage. J'ai 2 classes: livre et bookui. P>

book strong> p> xxx pré>

bookui strong> p >

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


6 commentaires

Pourquoi est-ce qu'un tableau de matrices?


Parce que c'est ce que j'essaie de travailler. Peu importe comme c'est moche ou à quel point c'est stupide. C'est mon but et je veux le faire pour que je puisse comprendre pourquoi cela n'a pas fonctionné, comment cela fonctionne, puis sur la façon de le faire différent.


OK, la solution simple est la suivante: il n'y a aucun moyen d'accéder aux propriétés de la classe dans ce tableau (0] style. (Corrige moi si je me trompe). Les tableaux sont également dactylographiés afin que la seule solution consiste à créer une gamme de tableaux d'objets , ce qui est mauvais, car vous devez savoir quel type d'objet vous traitez réellement (chaîne ou entier). OOP est là pour rendre la vie plus facile pour vous l'accepter.


-1: Si vous n'êtes pas disposé à accepter que certaines choses ne sont pas possibles que personne ne peut vous aider. C'est comme si vous nous avez donné de l'eau et nous a demandé de cuisiner des pâtes sans pâtes et un pot (et à temps pour le dîner).


Félix est correct. Les objets arbitraires ne sont pas des tableaux et vous ne pouvez pas utiliser la syntaxe de tableau sur eux. Ce n'est tout simplement pas Java.


Swell, cela a répondu à ma question alors.


5 Réponses :


3
votes

Notez la répétition de Book Code> dans Booknumber (int), BookTitle (String), Booklanguage (String), BookPrice (int) Code> - Il crie un type de classe.

Object books[3][4]


1 commentaires

Maintenant que cela a été édité, mon commentaire a l'air un peu épais. +1 pour la modification concernant la répétition de "livre" dans les noms de champs. C'est une odeur qui crie effectivement pour refactoring.



33
votes
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);

5 commentaires

Je seconde ce commentaire. Vous devez fermement envisager de créer un type personnalisé pour cela, plutôt que de le coller dans un tableau multidimensionnel avec un type d'objet générique. Le casting constant est un signe de mauvais design.


Je ne comprends pas ça. Pouvez-vous s'il vous plaît expliquer plus loin?


Il dit qu'un livre ne devrait pas être un tableau. C'est un type d'agrégat et doit être représenté par une classe.


"Chaque livre doit être créé sur ses propres (via un constructeur bien conçu), puis ajouté à la matrice." C'EST CE QUE JE VEUX ;). Excatement ce que je veux. Je souhaite Créer 3 objets (3 livres), définissez toutes les données et donnez-la à un tableau. Ensuite, je veux appeler par livre [0] [0] le Booknumber par exemple.


Je ne peux pas comprendre pourquoi vous insistez sur book [0] [0] autant. Ce n'est pas comme ça que ça marche dans Java. Si vous voulez le faire comme ça, vous devez choisir par exemple. Php.



0
votes

Pourquoi ne pas créer une classe livre avec propriétés: numéro, titre et prix. Ensuite, rangez-les dans un tableau de dimensions unique? De cette façon au lieu d'appeler xxx

.. Pour obtenir le titre de vos livres, appelez xxx

me semble un peu plus gérable et convivial.


6 commentaires

Parce que ce n'est pas ce que je veux.


Pourquoi est-ce un problème de le faire de cette façon? En plus d'être probablement la seule façon dont le code est bien plus facile à comprendre.


Becaus je ne le veux toujours pas et ce n'est pas ce que j'essaie de comprendre. Je suis selflearning Java. Cela ne m'aide pas lorsque les gens pesaient des chandeux de différentes codesolutions. Je veux rester dans mon "CodeFrame" donné, je peux donc le comprendre, puis passer à quelque chose de différent.


@Nocando: Si vous êtes auto-apprentissage, alors vous devriez écouter les personnes qui savent ce qu'ils font lorsqu'ils vous disent que vous allez à propos de quelque chose de mauvais sens. Et les gens ne font pas de centaines de solutions différentes à vous - ils suggèrent la même chose, qui est de faire une classe de livres.


Oui, bien cela pourrait être. Mais souvent, c'est comme cette analogie: l'apprentissage de la géométrie de base et des gens commencent à le bombarder à des calculs différentiels avancés. Alors qu'il / elle n'a aucune idée du calcul différentiel. Pas dans ce cas ici, mais assez souvent le cas sur Stackoverflow. Je veux dire que toutes les solutions fonctionnent si je les imples, mais ce n'étaient pas ce que je cherchais. Si cela ne fonctionne pas, alors cela ne fonctionne pas. J'apprécierais que les gens puissent expliquer un débutant pourquoi et comment cela ne fonctionne pas et ne commence pas immédiatement à lancer d'autres solutions. Cela n'aide pas du tout.


Chris l'a expliqué, alors cette question est discutable;).



1
votes

Utiliser le type d'objet Ie des livres d'objets [3] [4];


0 commentaires

3
votes

@nocando: Vous ne pouvez pas créer de matrice avec différents types de données car Java prend en charge uniquement les variables avec un type de données ou un objet spécifique. Lorsque vous créez un tableau, vous tirez ensemble un assortiment de variables similaires - presque comme une variable étendue. Toutes les variables doivent donc être du même type. Java ne peut pas différencier le type de données de votre variable à moins que vous ne le disiez ce que c'est. Ex: int indique que toutes vos variables déclarées sont de type de données int . Ce que vous pouvez faire est de créer 3 tableaux avec des informations correspondantes.

int booknumber [] = {1, 2, 3, 4, 5};
Int Bookname [] = {nameofbook1, nameofbook2, nameofbook3, nameofbook4, nameofbook5} //c .. etc ..

Maintenant, un seul numéro d'index vous offre toutes les informations de ce livre. Ex: Tous vos tableaux avec index numéro 0 ([0]) ont des informations pour le livre 1.


0 commentaires