Try to represent the data with classes and enums instead, so you seperate the name from the gender.
Define gender:
public enum Gender {
MALE, FEMALE, SHEMALE_WTF;
}
Define a person:
public class Person {
private String name;
private Gender gender;
public Person(String name, Gender gender) {
this.name = name;
this.gender = gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
public Gender getGender() {
return gender;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public boolean isGender(Gender gender) {
return this.gender == gender;
}
}
Now we can create a person simply by writing:
Person karen = new Person("Karen", Gender.FEMALE);
Lets check if 'karen' is a male:
if(karen.isGender(Gender.MALE)) {
//Ok, karen is a male
}
else {
//karen is not a male
}
Lets create a Person array instead of your String array:
Person[] ppl = new Person[]{new Person("Karen", Gender.FEMALE),new Person("Kevin", Gender.MALE),new Person("Lee", Gender.MALE),new Person("Joan", Gender.FEMALE),new Person("Des", Gender.MALE),new Person("Rick", Gender.MALE)};
Now lets do the counting:
int females = 0;
int males = 0;
for(Person person : ppl) {
switch(person.getGender()) {
case Gender.MALE:
males++;
break;
case Gender.FEMALE:
females++;
break;
case Gender.SHEMALE_WTF:
//hmm?
males++;
females++;
break;
// but I would just:
// throw new SecurityException("SYSTEM GOT VIRUS!!!!");
}
}
Now you have a code that is easy to read.