0
votes

Laisser un utilisateur créer plus d'un objet

J'essaie d'écrire un programme qui permet à l'utilisateur de créer 2 dépôts. Je l'ai dans un énoncé de commutation, mais quand il se termine et je retourne pour créer le deuxième dépôt il écrase Depot1.

Je ne sais pas comment j'aurais proposé de créer 2 dépôts distincts. P>

public class Depot 
{
   private String name;
   private Product product1, product2, product3;
   static int depotCounter = 0;

   // Constructor to count depot objects 
    public Depot(){
        depotCounter++;
    }
   // Method to make sure no more than 2 depots are created
    public boolean checkDepot(){
        if (depotCounter <= 2){
            return true;
        }
        else{
            return false;
        }


4 commentaires

Je ne peux pas utiliser des tableaux aussi, désolé aurait dû ajouter cela.


Pourriez-vous montrer la classe de dépôt aussi? Et une raison pour laquelle vous n'utilisez pas seulement deux paramètres Depot1 et Depot2 et dès que les deux sont initialisés, arrêtez-vous de créer de nouveaux?


Quelle est la logique à l'intérieur de Checkdepot?


Ajouté que, désolé.


3 Réponses :


0
votes

Vous pouvez essayer de créer une liste de dépôts et simplement itérer à travers eux. De cette façon, vous pouvez ajouter un objet chaque fois que vous pliez à la liste ou supprimez-le de la liste.

En outre, vous pouvez ajouter un identifiant dans l'objet DEPOT , qui donne une pièce d'identité ou quelque chose afin de pouvoir les différencier.


0 commentaires

1
votes

Lorsque vous entrez l'option 1, tout ce qu'il contient est exécuté le code dans le premier "commutateur". Et là, vous utilisez toujours Depot1 comme variable. Au fait, après avoir quitté la déclaration de commutation, votre dépôt est perdu de toute façon, car vous le déclarez dans ce bloc. Ce que vous pourriez faire, c'est quelque chose comme ceci:

do {
    Depot depot1;
    Depot depot2;
    //Your code for the menu, e.g. selecting what the user wants to do
    switch (option) {
        case 1 :
            if (depot1 == null) {
                depot1 = new Depot()
                //Do what you want to do with your depot
            } else if (depot2 == null) {
                depot2 = new Depot()
                //Same as above
            }
            break;
            //Rest of the switch statement
    }
} while (option != 3)


0 commentaires

0
votes
 int option = 0;
        Depot depot;
        String name;
        Scanner console = new Scanner(System.in);
        List<Depot> depotList = new ArrayList<>();
        do {

            System.out.println("(1) Add depot number ");
            System.out.println("(2) Remove a depot");
            System.out.println("(3) Exit program");
            if (console.hasNextInt()) {
                option = console.nextInt();

                switch (option) {
                    case 1:
                        if (depotList.size() < 2) {
                            System.out.println("Enter new Depot name:");

                            if (console.hasNext()) {
                                name = console.next();
                                depot = new Depot();
                                depot.setDepotName(name);
                                depotList.add(depot);
                            }
                        } else {
                            System.out.println("Error only 2  depots allowed");
                        }
                        break;
                    case 2:
                        // remove depot code
                        break;
                    case 3:
                        break;
                }
            }
        } while (option != 3);

        System.out.println("Depots added:");
        System.out.println("-------------");
        depotList.forEach(currentDepot ->
            System.out.println(currentDepot.getDepotName()));         

0 commentaires