我有這個由 4 部分組成的 Pset 課程(提交截止日期已過),但我一直在解決問題 1,下一組 Pset 將在本周晚些時候開放。我讀過硬體章節,去辦公時間(他們可以幫助概念但不能幫助實作代碼)并重新觀看講座,但我找不到我應該如何做到這一點。
這是我無法更改的部分(import java.util.* 包含在其上方):
public static <T extends Comparable<T>> int findMax(T[] arr)
所以它是一個 int 函式,它傳遞一個型別 T 陣列并應該回傳一個 int 索引。我嘗試了多種方法來嘗試使用 for & while 回圈進行迭代,但問題是我不知道該怎么做。
下面的代碼是從程式員/博主 Deepesh Darshan關于使用泛型查找最大值的帖子修改而來的,因為它與我使用 for 回圈的代碼非常相似。“回傳-1;” 如果沒有添加代碼。
int maxPoint = arr[0];
for(T arrScan : arr){
if(arrScan.compareTo(maxPoint) > 0 ) {
maxPoint = arrScan;
}
return maxPoint;
}
return -1;
}
一個問題是他的解決方案一直使用 T 而我的不能。
public static <T extends Comparable<T>> T max(T... elements)
我上面的代碼給出了以下錯誤:
GenericMethods.java:16: error: incompatible types: T cannot be converted to int
int maxPoint = arr[0];
^
where T is a type-variable:
T extends Comparable<T> declared in method <T>findMax(T[])
GenericMethods.java:18: error: incompatible types: int cannot be converted to T
if(arrScan.compareTo(maxPoint) > 0 ) {
^
where T is a type-variable:
T extends Comparable<T> declared in method <T>findMax(T[])
GenericMethods.java:19: error: incompatible types: T cannot be converted to int
maxPoint = arrScan;
^
where T is a type-variable:
T extends Comparable<T> declared in method <T>findMax(T[])
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
3 errors
我知道這是因為我需要將 maxPoint 設為“T”,而不是“int”,但這只會將轉換錯誤降低到回傳值。
有人可以向我指出如何找到具有給定限制的最大索引而不會導致轉換錯誤的一些閱讀或建議嗎?我似乎在 GFG、W3 或向我建議的任何地方都找不到任何內容。
uj5u.com熱心網友回復:
您需要跟蹤索引而不是元素:
int max = 0;
for (int i = 1; i < arr.length; i ) {
if (arr[i].compareTo(arr[max]) > 0) {
max = i;
}
}
return max;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/311163.html
