簡體   English   中英

在通用數組方法中找到最大的元素,整數,字符串,字符

[英]Find largest element in a generic array method, Integer, String, Character

我有一種方法可以很好地找到通用數組中的最小元素。 但是,當我嘗試相同的方法但略有不同時,每次運行它都會返回0。我不知道為什么。

我希望解決該問題的方法看起來與下面的方法差不多。 我不想導入Generic.max或使用集合,我想以一種更原始​​的方式進行處理,如下所示。

如何使用類似於下面的方法來找到最大值? 當我嘗試將<0更改為> 0時,它不起作用。 如何使這種min方法成為max方法?

    public static <E extends Comparable<E> > int getSmallesElement(E[] list) {
        int minIndex = 0;
        // Iterate from i+1 ti i-1
        for (int index = minIndex + 1; index <= list.length - 1; index++) {
            minIndex = (list[index].compareTo(list[minIndex]) < 0 )? index : minIndex;
        }// end for 

        return minIndex;
    }// end getSmallest method

就像我說的,如果我可以像我的第一種方法那樣使用條件,那將很好。 我是泛型的新手,我正在嘗試使這些方法適用於Integer,String和Character數組。

謝謝。

您將條件表達式重寫為if語句,但未正確執行它:您希望使用maxIndex = index而不是index = maxIndex

除了可以在if兩個分支的每次迭代中分配maxIndex ,您可以僅在“ true”分支中分配它,然后完全刪除“ false”分支:

for(int index = maxIndex + 1; index <= list.length -1; index++) {
    if (list[maxIndex].compareTo(list[index] ) < 0) {
        maxIndex = index;
    }
}

您將在循環過程中重置index ,而不僅僅是設置maxIndex

public static <E extends Comparable<E> > int getLargestElement(E[] list) {
    int maxIndex = 0;
    for(int index = 1; index <= list.length -1; index++) {
        if (list[index].compareTo(list[maxIndex] ) > 0) {
            maxIndex = index;
        }
    }
    return maxIndex;
}

我發現了一些最終可行的方法。

public static <E extends Comparable<E> > E getLargestElement(E[] list) {
        E max = list[0]; // set first value in array as current max
        for(int i = 1; i < list.length; i++) {
            if(list[i].compareTo(max) > 0 ) {
                max = list[i];
            }
        }// end for
        return max;
    }

有人可以向我解釋為什么其他答案和我嘗試使用的方法總是返回0嗎? 對我來說,這聽起來不錯,您的所有答案也都一樣,但它們沒有用。

暫無
暫無

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

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