用于人员,年龄和体重列表的Java数组

时间:2015-01-19 00:13:28

标签: java arrays

我有一个使用数组的赋值,但我似乎无法打印出正确的结果。赋值要求创建一个具有允许用户执行以下功能的类:

1-为无数人插入姓名,年龄和体重,直到输入名称“已完成”。

2-它应该能够显示所有人的姓名,年龄和体重,从最轻的体重到最重的体重。

3-用户还应该能够显示他们搜索过的人的年龄和体重(如果存在)。

这是我到目前为止所得到的:

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

    }
}

}

所以,第一部分有效(除了小错误)。 第二部分不会将值作为字符串返回。我已经尝试使用toString()方法并将对象转换为带循环的字符串,但它们都不起作用。我需要一些帮助,将对象显示为字符串而不是“lab04.Persons@14eac69”。 第三部分也有一些问题,但我认为它们与第二个问题有关,因为编译器可能不喜欢将字符串与对象进行比较。

我知道在我的代码中有很多看起来像垃圾的东西,但它们可以将各种东西放在一起,否则我会收到错误。我想在选择小错误并清理代码之前修复主要功能。

3 个答案:

答案 0 :(得分:0)

您可以使用ArrayList动态添加新的Person对象。 ArrayList为您提供了许多有用的选项,例如:

  • 加()
  • 得到()
  • 组()
  • 尺寸()
  • 含有()
  • ...

因此,对于您的任务,您可以实现目标:

  1. 通过Scanner或GUI界面询问用户姓名,年龄和体重。 (可能与Swing)。可以在此处找到使用Scanner类的示例:Scanner Example。然后,您应该将它们包装在Person数据模型类中,并将此对象添加到ArrayList

  2. 要根据人物的权重对创建的ArrayList进行排序,您应该实施Comparator。可以在此处找到一个示例:Comparator Example

  3. 最后但并非最不重要的是通过Scanner向用户询问搜索到的人员,并使用ArrayList中的contains方法实际搜索该对象。您始终可以编写自己的hash()equals()方法来控制contains()方法的工作方式。可以在此处找到一个示例:Search ArrayList example

答案 1 :(得分:-1)

您可以使用List对象和add()方法向该列表中添加更多实体。 但是,由于您必须添加多个值,因此您应该创建包含其他列表的List,或者您可以实现其他类型的二维结构。

答案 2 :(得分:-1)

首先,定义班级人员

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

其次,定义类People的列表

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