首页 > 解决方案 > 根据类的值将一个数组分成两个数组。爪哇

问题描述

所以我有三个班级PersonGroupOfPeople和一个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

我希望你能给我一些关于我做错了什么的见解。

标签: javaarrays

解决方案


没关系,解决了...

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

推荐阅读