【问题标题】:Find Largest in AnyType array在 AnyType 数组中查找最大的
【发布时间】:2011-10-14 22:38:55
【问题描述】:

您好,我正在编写这个程序,我想弄清楚如何比较数组中的两个项目以找到最大的项目。

public static <T extends Comparable< ? super T>> T getLargest(T [] a, int low, int high){
    if(low>high)
            throw new IllegalArgumentException();
    T[] arrCopy = (T[]) new Object[high-low]
    for(int i=low;i<high;i++){
        if(a[i]>a[i+1])
            arrCopy[i]=a[i];
        else
            arrCopy[i]=a[i+1];
    }
    return arrCopy[0];
}

但后来我不知道如何测试它,我尝试了:

T[] a = {1,12,7,45,22,23,5};
    System.out.println("Array: [1,12,7,45,22,23,5] low=0 high, Largest?: " + rec.getLargest(a, 0, 6));

但我收到一条错误消息

Rec类型中的getLargest(T[], int, int)方法不适用于参数(int[], int, int)

如何调用它以使其成为一个数字数组?字符串数组是否可以与我获得最大的代码一起使用?

也许只是简单的答案,但我已经在整个程序上工作了一段时间,现在事情看起来并不那么清楚。

编辑

将数组从 int[] 更改为 Integer[] 之后。我在这条线上遇到错误if(a[i]>a[i+1])

对于参数类型 T、T,运算符 > 未定义

我假设我必须更改 &gt; 符号来比较数组中的元素,但我该怎么做呢?使用 compareTo() 吗?

【问题讨论】:

    标签: java arrays get


    【解决方案1】:

    它不起作用,因为int 不是Comparable 的子类,因为它甚至不是Object。基本上,您不能将原语(intshortlongcharbooleanbyte)与泛型一起使用。

    尝试使用 Integer 的数组调用它。

    Integer[] a = {1,12,7,45,22,23,5};
    System.out.println("Array: [1,12,7,45,22,23,5] low=0 high, Largest?: " + rec.getLargest(a, 0, 6))
    

    如果您希望您的方法能够接受int[],则需要为每个要接受的方法(int getLargest(int[], int, int)char getLargest(char[], int, int) 等)设置一个单独的函数。

    编辑:

    为了响应您的编辑,您需要使用compareTo()&lt; 只为原语定义。

    【讨论】:

    • @fgualda87 - 我已经回答了,但通常这个网站上的每个问题都应该是一个问题。如果您有更多问题,请打开一个新问题。这样你会更快地得到答案(我假设没有其他人回答这个问题,因为他们认为我已经有了)。
    猜你喜欢
    • 2013-11-28
    • 2021-11-29
    • 2012-08-14
    • 1970-01-01
    • 2013-04-24
    • 2020-08-20
    • 1970-01-01
    相关资源
    最近更新 更多