簡體   English   中英

在 Java 中刪除數組的最高和最低

[英]Drop highest and lowest of an array in Java

現在我有一個處理分數的項目。 需要對分數進行排序,丟棄最高和最低的分數,然后將中間的分數相加。 我已經創建了數組,並完成了排序。 我不知道如何降低最高和最低。 任何幫助表示贊賞,謝謝!

public class Tester {

public static void main(String[] args) {
    double[] fractions = {(6/7),(2/4),(3/4),(3/18),(1/8),(10/20),(2/6)};
}
public static void selectionSort (int... arr)
{
    int i = 0, j = 0, smallest = 0;
    int temp = 0;

    for (i = 0;i<arr.length - 1;i++)
    {
        smallest = i;
        for (j = 1; j<arr.length - 1; j++)
        {
            if (arr[j]<arr[smallest])
                smallest = j;
        }
        temp = arr[smallest];
        arr[smallest] = arr[i];
        arr[i] = temp;

    }

    //Drop highest and lowest here
}
}

首先,您必須在數組初始化的分母或分子中添加小數點,以獲取未滿0的數組(這樣您就不會進行整數數學運算)。 或者只是在整數數學運算( 6/7d )的末尾添加d

接下來,您可以使用Arrays.sort進行Arrays.sort (或繼續使用自定義排序方法),並且可以使用Arrays.copyOfRange獲得子數組。 這非常方便,因為您可以為其指定開始索引和結束索引。 這樣的事情應該可以解決問題:

public static void main(String[] args) {
    double[] fractions = {(6./7),(2./4),(3./4),(3./18),(1./8),(10./20),(2./6)}; //Add decimal points
    Arrays.sort(fractions); //Sort your array
    double[] removeLowestAndHighest = Arrays.copyOfRange(fractions, 1, fractions.length-1); //returns new array with first and last element removed.    
}

我建議使用List,然后您可以簡單地使用.remove(0)、. remove(size-1)

// Create a new array that is 2 smaller than the orriginal.
int[] newArr = new int[arr.length-2];  
// Iterate through the old array, skipping the first and last elements.
for(int i = 0; i < newArr.length; i++)
{
    newArr[i] = arr[i+1];
}

您可以將數組轉換為列表以刪除最小值/最大值,然后根據需要轉換回數組

您可以使用Arrays.asList(array)進行轉換

http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

您可以在列表中使用“收藏夾”的最小和最大方法來確定需要刪除的內容

http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM