整数の配列リストがあります。最小の 2 つの整数を除いた整数の平均を計算する必要があります。私はこれを行うさまざまな方法を試し続けていますが、私がやりたいことは、min1 を見つけて削除し、次に min2 を見つけて削除することだと思います。
public double computeAverageWithoutLowest2()
{
ArrayList<Student> newscores = new ArrayList<Student>(scores);
int newtotalScores=0;
int newavg=0;
int min1 = 0;
int min2 = 0;
min1 = newscores.get(0).getScore();
for (int i = 0; i< newscores.size(); i++)
{
if (newscores.get(i).getScore() < min1)
{
min1 = newscores.get(i).getScore();
}
}
ここで、配列リストから min1 を削除したいと思います。私は明らかに newscores.remove(min1); を試しました。これは機能しません。配列 min1 内のどのスポットを見つけて削除するにはどうすればよいですか?
どんな助けでも大歓迎です!!
さて、コメントを見て、コードを次のように変更しました。
ArrayList<Student> newscores = new ArrayList<Student>(scores);
int newtotalScores=0;
int newavg=0;
int minPos1 = 0;
int minPos2 = 0;
int min1 = newscores.get(0).getScore();
int min2 = newscores.get(0).getScore();
for(int i = 0; i < newscores.size(); i++)
{
if(newscores.get(i).getScore() < min1)
{
min1 = scores.get(i).getScore();
minPos1 = i;
}
}
newscores.remove(minPos1);
for(int j = 0; j < newscores.size(); j++)
{
if(newscores.get(j).getScore() < min2)
{
min2 = scores.get(j).getScore();
minPos2 = j;
}
}
newscores.remove(minPos2);
この方法は min1 を削除するのに機能しますが、min2 を削除するのには機能しません。代わりに、min1 が削除したのと同じ位置を削除するだけです。