わかりました。getSharedPreferencesを使用してハイスコアを保存していますが、入力する前に、配列を介してスコアを昇順で並べ替えたいと思っていましたが、最初の位置でスコアよりも小さいスコアが見つかった場合、残りのスコアはチェックされません。一番小さい?
//function to add score to array and sort it
public void addscoretoarray(int mScore){
for(int pos = 0; pos< score.length; pos++){
if(score[pos] > mScore){
//do nothing
}else {
//Add the score into that position
score[pos] = mScore;
break;
}
}
sortArray(score);
}
この問題を修正するには、ループの前後にsortArray()を呼び出す必要がありますか、それとも同じ結果を達成するためのより良い方法がありますか?
また、sortArray(score)関数はArrays.sort(score)を呼び出しているだけであり、scoreはmScoreの配列です。
編集:@Vincent Ramdhanieが投稿した内容に基づいて、投稿を修正しました:
public void addscoretoarray(int mScore){
int pos = score.length;
//sort the array (in ascending order)
sortArray(score);
//go though the array( in descending order) and check for a place that suits the conditions
while(pos>=0 && score[pos] > mScore){
pos--; //do nothing as score[pos] is larger than mScore
}
//so once a pos is found (e.g. broke out of the while loop)
//check that it is still in the list
if(pos >= 0){
//if it is then move everything down 1 position
for(int i = 0; i < pos; i++){
score[i] = score[i+1];
}
//replace the initial pos with the new score
score[pos] = mScore;
}
}
for(int i = 0; i < pos; i++){
私はまだそれがループにあるときにリストから外れると信じています。