按年龄打印阵列

时间:2015-12-21 15:23:53

标签: java

创建一个获取用户输入并将其存储在数组中的程序。您将存储至少3人的信息。每个人将需要存储三条信息:姓名,年龄和性别(年龄必须是整数)。用户输入有关每个人的信息后,您将打印所有信息,如下所示

人员名单

Melissa, 28, F
Adam, 11, M
Landon, 6, M
Sadie, 1, F

当我同时拥有String和int时,如何按年龄订购人员?这是我的代码:

public static void main(String[] args) {

    Scanner inputString = new Scanner(System.in);
    Scanner input = new Scanner(System.in);

    System.out.println("Enter your age:");
    int age1 = input.nextInt();
    System.out.println("Enter your name:");
    String name1 = inputString.nextLine();
    System.out.println("Enter your gender:");
    String gender1 = inputString.nextLine();

    System.out.println("Enter your age:");
    int age2 = input.nextInt();
    System.out.println("Enter your name:");
    String name2 = inputString.nextLine();
    System.out.println("Enter your gender:");
    String gender2 = inputString.nextLine();

    System.out.println("Enter your age:");
    int age3 = input.nextInt();
    System.out.println("Enter your name:");
    String name3 = inputString.nextLine();
    System.out.println("Enter your gender:");
    String gender3 = inputString.nextLine();

    int[] age = new int[3];
    age[0] = age1;
    age[1] = age2;
    age[2] = age3;

    String[] name = new String[3];
    name[0] = name1;
    name[1] = name2;
    name[2] = name3;

    String[] gender = new String[3];
    gender[0] = gender1;
    gender[1] = gender2;
    gender[2] = gender3;

    System.out.print("List of People");
    System.out.print("\n" + (age[0]) + ", " + (name[0]) + ", " + (gender[0]));
    System.out.print("\n" + (age[1]) +", " + (name[1]) +", "+ (gender[1]));
    System.out.print("\n" + (age[2]) + ", " + (name[2]) +" , "+ (gender[2]));
}

1 个答案:

答案 0 :(得分:1)

如果你想学习Java,请先尝试学习面向对象的概念。

在您的具体情况下,您应该使用Person类,一个List<Person>Comparator Person个实例对您的列表进行排序,而不是尝试排序三个不同的数组。看看下面的例子。

首先,您的跑步者类包含main()方法:

package test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import test.Person.Gender;

public class Runner {

    public static void main(final String[] args) {
        Scanner input = new Scanner(System.in);
        Boolean createNewPerson = true;
        // a single list of person instances
        List<Person> people = new ArrayList<Person>();
        while (createNewPerson) {
            Person person = new Person();
            System.out.println("Enter age:");
            person.setAge(Integer.valueOf(input.nextLine()));
            System.out.println("Enter name:");
            person.setName(input.nextLine());
            System.out.println("Enter gender:");
            person.setGender(Gender.valueOf(input.nextLine().toUpperCase()));
            // add the person to the list
            people.add(person);
            System.out.println("Add another person ? (true/false)");
            createNewPerson = Boolean.valueOf(input.nextLine());
        }
        input.close();
        // here is the sorting trick
        Collections.sort(people, new AgeComparator());
        // print it out
        System.out.println(Arrays.toString(people.toArray()));
    }
}

您的Person班级:

package test;

public class Person {
    private String name;
    private Gender gender;
    private Integer age;

    public Integer getAge() {
        return this.age;
    }

    public void setAge(final Integer age) {
        this.age = age;
    }

    public String getName() {
        return this.name;
    }

    public void setName(final String name) {
        this.name = name;
    }

    public Gender getGender() {
        return this.gender;
    }

    public void setGender(final Gender gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return this.name + " is a " + this.gender + " and is " + this.age + " year(s) old." + System.lineSeparator();
    }

    enum Gender {
        MALE,
        FEMALE;
    }

}

你的Comparator(我在这里写了一个按年龄进行比较,但这只是一个例子):

包裹测试;

import java.util.Comparator;

public class AgeComparator implements Comparator<Person> {

    @Override
    public int compare(final Person person1, final Person person2) {
        return person1.getAge().compareTo(person2.getAge());
    }

}

换句话说,编程不是关于写行,而是关于概念,设计,使用概念,然后才编写代码行。