2017-10-12 134 views
-1

我想做一個方法的'差異',找到一個int數組中的最大數字並將int返回給主方法。我得到一個錯誤,告訴我我無法將int數組轉換爲int。我該如何做這項工作?我不想返回整個數組。非常感謝在java中從int []方法返回一個int

public class bigDiff{ 
    public static void main(String[] args){ 
     int[] arr = new int[] {7, 6, 8, 9}; 
     difference(arr); 
    } 

    public static int difference (int[] input){ 
     int smallest = input[0]; 
     int largest = input[0]; 

     for (int i = 0; i < input.length; i++){ 
      if(input[i] >= largest){ 
       largest = input[i]; 
      } else if(input[i] <= input[largest]){ 
       smallest = input[i]; 
      } 
     } 
     return largest; 

    } 
} 
+7

'輸入[I] < =輸入[最大]'< - 錯字?不應該是'輸入[我] <=最小'?我期望這行會經常導致ArrayIndexOutOfBoundsException。 –

+3

除此之外,我真的不能重現你得到的錯誤。你確定你正在運行你發佈的代碼嗎? –

+0

該死的。這是一個愚蠢的錯誤。謝謝您的幫助。我得到它的工作 –

回答

-1

這應該只是罰款:

public static int difference (int[] input){ 
    int smallest = input[0]; 
    int largest = input[0]; 

    for (int i = 0; i < input.length; i++){ 
     if(input[i] > largest){ 
      largest = input[i]; 
     } else if(input[i] < smallest){ 
      smallest = input[i]; 
     } 
    } 
    return largest; 

} 

也有是在保持最小的值,當你只關心最大的是沒有意義的。

0

手錶這行代碼

else if(input[i] <= input[largest]){ 
      smallest = input[i]; 
     } 

input[largest],第一次最大值爲7表示輸入[7],和您的陣列大小隻有4.so這個不起作用。

input[largest]改爲使用input[i]

0

我會盡力解釋一些事情:
首先,你的數組的聲明是很奇怪的,你應該聲明:int[] arr = {7, 6, 8, 9};
其次,difference函數返回一個int,你這是幹嘛用的?什麼都沒有..試試打印.. System.out.println(difference(arr));
第三,你試圖得到最大的數字,爲什麼你需要最小的數字?即使編譯器也會警告你一個未被使用的變量。 所以你difference功能應該是這樣的:

int largest = input[0]; 
for (int i = 0; i < input.length; i++){ 
    if(input[i] > largest) 
     largest = input[i]; 
} 
return largest; 

**你不需要,如果input[i] == largest做任何事情,所以檢查if(input[i] > largest)就夠了。

好運:)

0

您已經聲明數組即int[] arr = new int[] {7, 6, 8, 9}長度此陣的是4,但這裏的區別功能,

for (int i = 0; i < input.length; i++){ 
     if(input[i] >= largest){ 
      largest = input[i]; 
     } else if(input[i] <= input[largest]){ 
      smallest = input[i]; 
     } 
    } 

當您在否則,如果比較這個(輸入[ I] < =輸入[最大])那麼它會因爲在第一次迭代最大= 7和在下一次迭代它會在否則,如果其中輸入[1] < =輸入[7]是產生錯誤選中以便生成數組超出界限的異常。

我想你想獲得數組中最大的元素,所以不要這樣做,你可以簡化數組並輕鬆訪問最大的元素。

0

問題:
1. largest被用作索引(即,input[largest]),這可能導致ArrayOutOfBoundsException如果largest比數組長度 2. largestif用於設置smallest
3大。 difference返回largest元素,而不是largestsmallest元素之間的差異
4。的difference返回值不使用(不是真正的問題,但是不能看到的difference輸出)

否則(修改)方案下面的工作:

public class bigDiff{ 
    public static void main(String[] args){ 
     int[] arr = new int[] {7, 6, 8, 9}; 
     System.out.println(difference(arr)); // problem 4 was here 
    } 

    public static int difference (int[] input){ 
     int smallest = input[0]; 
     int largest = input[0]; 

     for (int i = 0; i < input.length; i++){ 
      if(input[i] >= largest){ 
       largest = input[i]; 
      } else if(input[i] <= smallest){ // problems 1 and 2 were here 
       smallest = input[i]; 
      } 
     } 
     return largest - smallest; // problem 3 was here 

    } 
}