java - 不使用 java.util 将对象数组排序到堆栈中
问题描述
我必须通过随机生成他们的年龄和 ID 来创建一个包含 50 人的对象数组。之后,我必须将列表中生成的每个人分类为 2 个堆栈数组,其中第一个堆栈将包含年龄低于 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;
}
解决方案
只是,遍历 person 数组,并为索引保存两个计数器。
for(int i=0, a=0, m=0; i < person.length; i++){
var aux = person[i];
if(aux.age < 18) minors[m++] = aux;
else adults[a++] = aux;
}
在我的建议中,a 是一个计数器,它会随着检测到的每个成年人而增加;和 m 增量为每个检测到的未成年人。
另外,我建议删除 Person.showData,而不是您可以覆盖 toString,然后简单地调用System.out.println(person[i]);
此外,您可以使用 java.util.Random 代替 Math.random,它具有更好的方法(nextInt、nextLong,甚至可以生成随机数流)。我会用那个。
推荐阅读
- java - 具有两个类层次结构的通用类
- linux - Bash+Expect 脚本在 crontab 中无法正常运行
- angular - 动态添加的输入 [type='number'] FormControl 第一次没有设置值和验证
- php - DQL Concat 许多字符串
- android - 如何在android中为DrawableLeft图标设置边距或填充
- java - Java netbeans - 如果jtextfield值为空,如何将jtextfield值分配为零
- java - IText - 如何将渐变设置为 PDF 文档的背景?
- janusgraph - janusgraph.diskstorage.PermanentBackendException:执行后端操作IndexQuery时出现永久异常
- java - 使用 @Async 调用方法与在新线程中调用方法
- r - 来自两个不同数据框的 Plotly R 图表