Я прочитал несколько руководств по настройке массивов Array.sort и множество поисковых запросов, но мне не хватает ответа. Сейчас Arrays.sort(charList) ничего не делает. Вот как выглядит мой код.
public class character implements Comparable<character>{
//public vars
public String charName;
public int initModifier;
public int initRoll;
public int secondInit;
/* ... getters, setters, other vars .. */
@Override
public int compareTo(character another) {
int compareInit = ((character) another).getTotalInit();
int comp = this.totalInit - compareInit;
int compareSecondInit = ((character) another).getTotalInit();
if (comp != 0)
{
return comp;
}
else
{
return this.secondInit - compareSecondInit;
}
}
}
Основная деятельность - это совокупность вещей. Часть, которая касается массивов. Сорт:
//add a character to the array.
public void addResults(character c)
{
debugInt++; //using this to debug
if(debugInt==3)
{
Log.d(tag,charList[0].charName); //always prints the first object entered
Log.d(tag,charList[1].charName); //always prints the second object entered
}
if (playersPerTurn<charLimit)
{
charList[playersPerTurn]=c;
Arrays.sort(charList,0,playersPerTurn);
playersPerTurn++;
updateDisplay();
}
}
Помоги мне ТАК, ты моя единственная надежда.
int compareSecondInit = ((character) another).getTotalInit();
Вы, наверное, хотели getSecondInit()
здесь.
Ваш compareTo()
с этой ошибкой не согласован - и, следовательно, результат не определен.
например:
element1:
totalInit = 1
secondInit = 2
element2:
totalInit = 1
secondInit = 2
element1.compareTo(element2) == 2 - 1 == 1
element2.compareTo(element1) == 2 - 1 == 1
В качестве дополнительной заметки о практике кодирования:
character
класса сбивает с толку, вам следует переименовать его.character
- это класс, а не поле.
compareTo()
, создав несколькоcharacter
и распечатав результат их сравнения?