2016-10-24 17 views
0

我想通過創建一個新的Java類來找到數組中的最小值。我無法傳遞數組並使用它來查找數組的最小值。如何將數組傳遞給另一個類以查找最小值?

我總共有兩個單獨的數組,我試圖找到它的值。

這裏是我創建的第一個類:

import java.util.*; 

public class mooseWeight 
{ 
    public int main(String[] args) 
    { 
     int[] length1; 
     int[] length2; 

     length1 = new int[20]; 
     length2 = new int[50]; 

     //Length 1 
     System.out.println("Array 1:"); 
     Random rnd = new Random(); 
     for(int i = 0; i<length1.length; i++) 
     { 
      length1[i] = rnd.nextInt(400) + 250; 
      System.out.println(length1[i]); 
      return length1[i]; 
     } 

     System.out.println("-----------------------------------"); 

     //Length2 
     System.out.println("Array 2:"); 
     Random rnd2 = new Random(); 
     for(int j = 0; j < length2.length; j++) 
     { 
      length2[j] = rnd2.nextInt(400) + 250; 
      System.out.println(length2[j]); 
      return length2[j]; 
     } 
    } 
} 

這被當前設置爲找到長度1 []中的最小值(第一陣列AKA)。

這是我試圖陣列傳遞到類:

public class minWeight 
{ 
    public static int getArrayMin(int[] arr) 
    { 
     mooseWeight array1[] = new mooseWeight[]; 


     int minValue = array1[0]; 
     for (int i = 0; i < array1.length; i++) 
     { 
      if (array1[i] < minValue) 
      { 
       minValue = array1[i]; 
      } 

      //return minValue; 
     } 
     return minValue; 
     System.out.println(minValue); 
    } 
} 

我現在的錯誤:

1 error found: 
File: D:\2016-2017\Fall2016\201_CSCE_Programming\Lab 7\minWeight.java [line: 5] 
Error: array dimension missing 
+1

mooseWeight array1 [] = new mooseWeight []; 你必須給數組的大小 – L01c

+0

'mooseWeight array1 [] = new mooseWeight [];'創建一個'mooseWeight'對象的數組。您正在創建它,然後嘗試從中獲取值。如果你在數組中存儲'int',你需要創建一個int數組。事實上,你正在傳遞'arr',所以刪除對'array1'的所有引用,並用'arr'替換它們,然後鬆開那個'mooseWeight'行,它實際上並沒有做任何事情。 – Alex

+0

@Brunaldo我有2個數組,我試圖通過。我的第一個數組是長度爲20.是否將'20'放在括號'[]'中? – Tristan

回答

0

mooseWeight類包含你的主,所以當你創建array1,你正試圖創建一個包含你的實際程序的數組。

mooseWeight array1[] = new mooseWeight[];正在創建一個mooseWeight對象的數組。

由於您沒有定義尺寸,這會失敗,但即使沒有,也不會起作用。

我假設你的意思是創建一個int的數組,然後遍歷它。

如果您創建了一個int的數組,然後嘗試在沒有添加任何內容的情況下對其進行循環,則循環將不執行任何操作,因爲沒有任何內容可以迭代。

在你的方法中,你傳入一個名爲arrint的數組,所以你需要使用它來循環。

如果您要將2個數組傳遞到方法中,則創建一個數組作爲方法的一部分仍然不起作用。

您需要修改您的方法聲明以接受第二個數組。

假設你想從這兩個數組中找到最小的值,我已經修改了我的代碼片段來做到這一點。 如果您需要以不同方式處理第二個數組,請修改處理secondArr的循環。

正如評論中所述,您的mooseWeight類應命名爲MooseWeight,以保持正確的Java命名約定。

類名稱位於PascalCase中,實例位於camelCase中。

要調用該方法,請使用以下代碼片段。

int[] ar1 = new int[20]; 
int[] ar2 = new int[50]; 
//Populate your arrays with values.... 

int minValue = MinWeight.getArrayMin(ar1, ar2); 

類:

public class MinWeight { 
     public static int getArrayMin(int[] arr, int[] secondArr) { 

     int minValue = arr[0]; 
     for (int i = 0; i < arr.length; i++) { 
      if (arr[i] < minValue) 
      { 
       minValue = arr[i]; 
      } 
     } 

     for (int i = 0; i < secondArr.length; i++) { 
      if (secondArr[i] < minValue) 
      { 
       minValue = secondArr[i]; 
      } 
     }   
     System.out.println(minValue); 
     return minValue; 
     } 
    } 

作爲最後的顧慮,在你的代碼,返回minValue您嘗試打印結果之前,所以打印指令總是無法訪問。

0

在minWeight誤差不的FOM數組參數,它是從這一行:

mooseWeight array1[] = new mooseWeight[]; 

不能分配在Java未知尺寸的陣列。 此外,您嘗試這樣做是沒有意義的。 只需從java方法中刪除上面的行,並將參數的名稱更改爲array1。

獲得像NetBeans或eclipse一樣的IDE。

+0

我懷疑這可能是大學作業的一部分,這可能會阻止使用IDE。當我獲得學位時,我們必須在所有Java任務的計劃文本編輯器中工作。深感沮喪,但我可以理解爲什麼教育機構這樣做。儘管如此,這對幫助現實世界的畢業生做好準備毫無幫助。切換到NetBeans之後絕對幸福! – Alex