gpt4 book ai didi

java - 查找 AnyType 数组中最大的值

转载 作者:行者123 更新时间:2023-12-02 08:08:45 25 4
gpt4 key购买 nike

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

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));

但我收到一条错误消息

The method getLargest(T[], int, int) in the type Rec is not applicable for the arguments (int[], int, int)

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

也许只是简单的答案,但我已经研究整个程序一段时间了,现在事情看起来不太清楚。

编辑

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

The operator > is undefined for the argument type(s) T, T

我假设我必须更改 > 符号来比较数组中的元素,但我该如何做到这一点?使用compareTo()?

最佳答案

它不起作用,因为 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()<仅为基元定义。

关于java - 查找 AnyType 数组中最大的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7774310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com