您好我正在尝试格式化并创建此数组:
Person[] persons = { person1, person2, person3, person4, person5, person6, person7, person8, person9, person10 };
// The aim is to form an array of the 5 strongest people's indices above
int[] arrayOfStrongestPeopleIndices = new int[5];
for (int index = 0; index < 10; index++){
int strength = persons[index].strength;
for (int str : arrayOfStrongestPeopleIndices){
//something @ here ?
}
}
所以我试图循环10个人,数组arrayOfStrongestPeopleIndices
应该是最强人指数中的5个(按最强到最弱的顺序排列,即array[0]
是最强人的索引5,而array[4]
是5)中最弱的
问题:如何返回按照规定格式化的arrayOfStrongestPeopleIndices?
答案 0 :(得分:0)
所以这是我的想法,尝试过它应该有效。 当我找到一个比“最强”的ArrayList中的任何一个更强的人时,我会将其后面的所有元素移动到一个位置。
ArrayList<int> strongest = new ArrayList<int>();
strongest.append(-1, -1, -1, -1, -1);
for (int i = 0; i < 500; i++) {
int str = persons[i].strength;
for(int j = 0; j < 5; j++) {
if(str > strongest[j]) {
int temp = strongest[j];
strongest[j] = str;
str = temp;
}
}
}
答案 1 :(得分:0)
https://docs.oracle.com/javase/8/docs/api/java/util/List.html#sort-java.util.Comparator-
List<Person> p = Arrays.asList(person);
Collections.sort(p, new Comparator<Person>() {
@Override
public int compare(Person a1, Persona2) {
return a1.strenght.compareTo(a2.strenght); //im assuming strenght is a number
}
});
person = p.toArray(new Person[0]);
现在你有一个从最弱到最强的有序数组
答案 2 :(得分:0)
这是一个返回整数数组的方法,它表示最强人的索引。
public int[] findStrongestIndices(Person[] persons) {
int[] arrayOfStrongestPeopleIndices = new int[5];
for (int i = 0; i < 5; i++) {
int temp = 0;
for (int j = 0; j < 10; j++) {
int str = persons[j].strength;
if (i == 0) {
if (str > temp)
temp = str;
}
else {
if (str > temp
&& str < persons[arrayOfStrongestPeopleIndices[i - 1]].strength)
temp = str;
}
}
for (int j = 0; j < persons.length; j++) {
if (temp = persons[j].strength)
arrayOfStrongestPeopleIndices[i] = j;
break;
}
}
return arrayOfStrongestPeopleIndices;
}
我不得不彻底检查代码以跟上编辑的步伐。这种方法将接受一个&#34; Person&#34;任意长度的数组,并返回一个长度为5的整数数组。