Tableaux Java pour la liste des personnes, l'âge et le poids [fermé]


J'ai une affectation qui utilise des tableaux mais je n'arrive pas à l'obtenir pour imprimer les résultats corrects. La consigne demande de créer une classe qui a des fonctions qui permettent à l'utilisateur :

1 - insérez un nom, un âge et un poids pour un nombre infini de personnes, jusqu'à ce que le nom "TERMINÉ" ait été entré.

2 - Il devrait pouvoir afficher tous les noms, âges et poids des peuples, triés du poids le plus léger au plus lourd.

3-L'utilisateur doit également pouvoir afficher l'âge et le poids d'une personne qu'ils recherchent (s'il existe).

Voici ce que j'ai obtenu jusqu'à présent:

 public static void main(String[] args) {
    Scanner kb = new Scanner(System.in);


    ArrayList<Persons> peopleAr = new ArrayList<Persons>();
    Persons ewPeople = new Persons();
    ewPeople.name = "Peter";
    ewPeople.age = 20;
    ewPeople.weight = 70.0;
    peopleAr.add(ewPeople);

    for (int i = 0; i < peopleAr.size()+5; i++) {

        System.out
                .println("Enter the number of the action you'd like to preform:");
        System.out.println("1. Add new profile.");
        System.out.println("2. View all prfiles (lightest to heaviest).");
        System.out.println("3. Search for a person.");
        System.out.println("4. Exit.");

        int key = kb.nextInt();

        switch (key) {
            case 1:
                System.out
                        .println("Enter the required information. Enter 'finished' in the name field to "
                                + "return to main menu. ");

                Persons newPeople = new Persons();

                newPeople.name = "abc";

                while (!newPeople.name.equals("finished")) {

                    System.out.println("Enter name: ");
                    newPeople.name = kb.next();

                    System.out.println("Enter age: ");
                    newPeople.age = kb.nextInt();

                    System.out.println("Enter weight: ");
                    newPeople.weight = kb.nextDouble();

                    peopleAr.add(newPeople);
                }
                break;

            case 2:

                for (int j = 0; j < peopleAr.size(); j++) {
                    System.out.println(peopleAr.get(i) + "  "
                            + peopleAr.get(i) + "   " + peopleAr.get(i + 2));
                }
                break;

            case 3:
                String nameTemp = "abc";
                while (!nameTemp.equalsIgnoreCase("done")) {
                    System.out
                            .println("Enter the name you'd like to search. Enter 'done' to return to main menu. ");
                    nameTemp = kb.next();
                    boolean check = peopleAr.contains(nameTemp);
                    if (check = true) {
                        int p = peopleAr.indexOf(nameTemp);

                        System.out.println(peopleAr.get(p) + "  "
                                + peopleAr.get(p + 1) + "   "
                                + peopleAr.get(p + 2));

                    } else {
                        System.out
                                .println("There is no match for your search.");

                    }
                }
                break;
            case 4:
                System.exit(0);
        }

    }
}

}

Donc, La première partie fonctionne (sauf pour les petits bugs). La deuxième partie ne renvoie pas les valeurs sous forme de chaîne. J'ai essayé d'utiliser la méthode toString() et de convertir les objets en une chaîne avec une boucle mais aucun d'entre eux ne fonctionne. J'ai besoin d'aide pour afficher les objets sous forme de chaînes au lieu de "lab04.Personnes@14eac69". La troisième partie a également quelques problèmes, mais je crois qu'ils sont liés au deuxième problème car le compilateur n'aimera probablement pas comparer des chaînes à des objets.

Je sais qu'il y a beaucoup de choses qui ressemblent à des ordures dans mon code, mais elles sont là pour maintenir les choses ensemble ou sinon j'aurais des erreurs. Je veux corriger les fonctions principales avant de ramasser les petits bugs et de nettoyer le code.

Author: Mjalil93, 2015-01-19

3 answers

Vous pouvez utiliser ArrayList pour ajouter dynamiquement de nouveaux objets Person. ArrayList vous donne un tas d'options utiles, par exemple:

  • ajouter()
  • get ()
  • set ()
  • taille()
  • contient()
  • ...

Donc, pour votre travail c'est comment vous pouvez atteindre votre objectif:

  1. Demandez à l'utilisateur le nom, l'âge et le poids via Scanner ou via l'interface graphique. (Probablement avec Swing). Un exemple d'utilisation de la classe Scanner peut être trouvé ici: Exemple de scanner . Ensuite, vous devez les envelopper dans une classe de modèle de données Person et ajouter cet objet à votre ArrayList.

  2. Pour trier le ArrayList créé en fonction des poids de la personne, vous devez implémenter un Comparator. Un exemple peut être trouvé ici: Exemple de comparateur

  3. Enfin, demandez à l'utilisateur la personne recherchée via Scanner et utilisez la méthode contains de votre ArrayList pour rechercher réellement l'objet. Vous pouvez toujours écrire le vôtre Méthode hash() et equals() pour contrôler le fonctionnement de la méthode contains(). Un exemple peut être trouvé ici: Recherche ArrayList exemple

 0
Author: dehlen, 2017-05-23 10:25:21

Vous pouvez utiliser un objet List et la méthode add() pour ajouter d'autres entités à cette liste. Cependant, puisque vous devez ajouter plusieurs valeurs, vous devez créer une liste contenant d'autres listes, ou vous pouvez implémenter un autre type de structure bidimensionnelle.

 -1
Author: GeorgeG, 2015-01-19 00:17:34

Tout d'abord , définissez la classe people

      public class People
      {
          public String name = "";
          public int  age ;
          public double weight;
      }

Deuxièmement, définissez une liste de personnes de classe

      List <People> peopleArray = new ArrayList < People> ();


     // create a new people
     People newPeople = new  People();
     newPeople.name  = "Peter";
     newPeople.age   = 20;
     newPeople.weight = 70.0;

     //  add it to array
     peopleArray.add(newPeople );
 -1
Author: peterho, 2015-01-19 00:30:22