java - 根据类的值将一个数组分成两个数组。爪哇
问题描述
所以我有三个班级Person
,GroupOfPeople
和一个Main
班级。
班级人:
public class Person {
private String name;
private int age;
private char gender;
private double weight;
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
... other getters and setters respectively
}
如您所见,Person 类有一个性别实例变量。在GroupOfPeople
我创建了一系列人员如下:
private Person[] personGroup = new Person[5];
这将存储所有人,无论其性别。我想要的是一种将男人与数组中的所有其他人分开的方法。
因此,我创建了如下所示的方法findMen()
:
public void findMen() {
int counter = 0;
Person[] allMen = new Person[5];
while (counter < personGroup.length) {
if (personGroup[counter].getGender() == 'M') {
allMen[counter] = personGroup[counter];
} else {
break;
}
counter++;
}
System.out.println("All the men are:");
for (int i = 0; i < allMen.length; i++) {
if (allMen[i] != null) {
System.out.println(allMen[i].getName());
}
}
}
这不起作用,它只会向allMen
数组中添加 1 个人,而我在 main 方法中定义了更多人:
GroupOfPeople gop = new GroupOfPeople();
Person p1 = new Person();
p1.setName("Person 1");
p1.setAge(40);
p1.setGender('M');
Person p2 = new Person();
p2.setName("Person 2");
p2.setAge(30);
p2.setGender('F');
Person p3 = new Person();
p3.setName("Person 3");
p3.setAge(20);
p3.setGender('M');
gop.findMen();
输出是:
All the men are:
Person 1
虽然预期的输出是:
All the men are:
Person 1
Person 3
我希望你能给我一些关于我做错了什么的见解。
解决方案
没关系,解决了...
Person[] allMen = new Person[5];
for (int i = 0; i < personGroup.length; i++) {
if (personGroup[i] != null) {
if (personGroup[i].getGender() == 'M') {
for (int j = 0; j < allMen.length; j++) {
if (allMen[j] == null) {
allMen[j] = personGroup[i];
break;
}
}
}
}
}
推荐阅读
- javascript - 当网站不安全时是否可以触发 javascript 警报?
- javascript - 如何在javascript中的模板文字内调用onclick事件
- python - Pandas:如何使用列和条件来获得特定的 json?
- azure - 这个 Github Action 如何修改 deployment.yml 文件
- c# - 无法使用 Webhook 执行 Discord Bot 命令
- c++ - 为什么 Widget 类使用指针作为数据成员?
- c - 尝试制作我的第一个 C 程序,将秒转换为周 + 天 + 小时 + 分钟 + 秒
- c# - 在 CPU 密集型程序中未按时触发 System.Timers.Timer
- ionic-framework - Google Play Developer API purchase.subscriptions 不返回 emailAddress 字段
- php - 获取唯一行(目前)