我必须通过随机生成50个人的年龄和ID来创建一个对象数组。之后,我必须将列表中生成的每个人分类为两个堆栈数组,其中第一个堆栈将包含年龄低于18岁的人,第二个堆栈将包含年龄大于18岁的人,它包括删除初始列表中的每个元素并将它们插入相应的堆栈,必须是一个自动执行的过程。我已经完成了第一部分,但是由于无法使用java.util来创建堆栈,因此我在分类方面遇到了问题。如果你能帮我,我会非常感激的。
public class Stacks01 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//create array of employee object
Person[] person = new Person[50] ;
Person[] minors = new Person[50];
Person[] adults = new Person[50];
for (int i = 0; i < 50; i++)
{
person[i] = new Person (generatorId(100000000, 999999999), generatorAge(0,100));
}
for (int j = 0; j < 50; j++)
{
System.out.println("Person "+(j+1)+": ");
person[j].showData();
}
}
//Person class with Id and age as attributes
static class Person{
int Id;
int age;
//Person class constructor
Person(int pId, int e){
Id = pId;
age = e;
}
public void showData(){
System.out.print("Id: "+Id + " " + " age: "+age);
System.out.println();
}
}
public static int generatorId(int min, int max){
double id;
id = ((Math.random() * (max - min)) + min);
return (int) id;
}
public static int generatorAge(int min, int max){
double age;
age = ((Math.random() * (max - min)) + min);
return (int) age;
}
1条答案
按热度按时间inn6fuwd1#
只需迭代person数组,并为索引保留两个计数器。
在我的建议中,a是一个计数器,它为检测到的每个成人递增;每检测到一个副音,m递增。
另外,我建议删除person.showdata,您可以替代tostring,然后只需调用
System.out.println(person[i]);
另外,您可以使用java.util.random来代替math.random,它有更好的方法(nextint、nextlong,甚至可以生成随机数流)。我会用这个。