2017-10-21 30 views
0

J'ai une classe pour créer des articles d'épicerie de base (class storeItems). Je veux permettre à l'utilisateur de créer son propre magasin d'alimentation en créant un nouvel objet de classe basé sur les paramètres que je reçois de l'utilisateur; i.e: "Quel est le nom?" "Quel est le prix?" "Combien en stock?" etc. Je ne veux pas non plus définir le nombre d'objets qui peuvent être créés, de sorte qu'il puisse être étendu au besoin par l'utilisateur.Est-il possible de créer des objets de classe en fonction de l'entrée de l'utilisateur?

Tout est correctement structuré, à l'exception des noms de variables d'objet eux-mêmes.

Comment pourrais-je créer ces objets? La plupart de mes recherches sur Google ont suggéré d'utiliser des cartes, mais je ne peux pas, pour la vie de moi, comprendre comment je structurerais cela.

C'est essentiellement ce que je suis en train de faire:

public static Map<String,storeItems> storeItemMapper = new HashMap<String,storeItems>(); 

public static void itemBuilder(String mapObjName, String itemName, double price, int initialQuantity) { 
    storeItems object[i] = new storeItems(itemName, price, initialQuantity); 

    storeItemMapper.put(mapObjName, object[i]); 
} 
+1

Qu'est-ce qui ne va pas? Qu'est-ce qui ne fonctionne pas comme prévu? Btw, les noms de classe doivent être dans la norme Camel Case, c'est-à-dire, StoreItems au lieu de storeItems. – Doleron

Répondre

0

Vous indexez à tort la déclaration variable:

storeItems object[i] = new storeItems(itemName, price, initialQuantity); 

Essayez:

storeItems object = new storeItems(itemName, price, initialQuantity); 

Sans l'indice [i ] Et comme je l'ai dit dans le commentaire, vous devriez utiliser la norme CamelCase pour nommer les classes:

StoreItems object = new StoreItems(itemName, price, initialQuantity); 
+0

Je sais que l'objet [i] ne fonctionne pas, j'essaie de savoir s'il est possible de nommer un objet basé sur l'entrée de l'utilisateur. C'était la meilleure façon d'expliquer ce que j'essayais de faire. Pour donner un exemple: je demanderais une entrée, puis i = reader.nextLine(); –

+0

Qu'est-ce que vous entendez par "nommer un objet"? Définir une valeur d'attribut de l'objet ou faire un mappage ("nom" -> objet) afin de récupérer l'objet plus tard basé sur ce nom? Dans le dernier cas, l'interface Map et ses implémentations (HashMap, Hashtable, TreeMap, ...) peuvent fournir un mécanisme éphémère (en mémoire). Si vous avez besoin de quelque chose de persistant, vous devez utiliser un formulaire sérialisé, comme une persistance basée sur un fichier, ou enregistrer l'objet dans une base de données relationnelle ou non relationnelle. – Doleron

+0

J'essaye de laisser l'utilisateur donner l'entrée pour le nom de variable d'objet. –