gpt4 book ai didi

java - 按年龄打印数组

转载 作者:行者123 更新时间:2023-12-01 10:41:20 26 4
gpt4 key购买 nike

编写一个程序来获取用户输入并将其存储在数组中。您将存储至少 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]));
}

最佳答案

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

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

首先,您的运行者类包含 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());
}

}

换句话说,编程不是写代码,而是构思、设计、使用概念,然后才是编写代码。

关于java - 按年龄打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34399060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com