2015-12-21 51 views
0

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

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

名单如何订购通过他们年龄的人,当我有串,并在同一诠释时间?这里是我的代码:

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])); 
} 
+2

可能重复的[如何在java中对多个数组进行排序](http://stackoverflow.com/questions/12164795/how-to-sort-multiple-arrays-in-java) –

+3

你真的需要学习如何使用循环...你的问题归结为“如何对java中的数组进行排序”,其中有几个巨大的网络示例... –

+0

可能的重复[Java - 基于另一个数组的值排序一个数组?](http://stackoverflow.com/questions/28556129/java-sort-one-array-based-on-values-of-another-array) –

回答

1

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

在特定情况下,你应该使用Person类,单List<Person>Person实例的Comparator排序列表,而不是试图三种不同的数组进行排序。看看下面的例子。

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(在这里我写了一个按年龄进行比较,但它只是一个包含main()方法

首先,你的亚军类一个例子):

封装测试;

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

} 

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