簡體   English   中英

如何將數組傳遞給另一個類以查找最小值?

[英]How do I pass an array to another class to find the minimum value?

我試圖通過創建一個新的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];
        }
    }
}

當前設置它是為了找到length1 []的最小值(又名第一個數組)。

這是我試圖將數組傳遞給的類:

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

mooseWeight類包含您的main,因此在創建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 ,因此打印指令始終無法訪問。

minWeight中的錯誤不是fom數組參數,而是來自以下行:

mooseWeight array1[] = new mooseWeight[];

您無法在Java中分配未知維的數組。 另外,您嘗試這樣做沒有任何意義。 只需從Java方法中刪除上面的行,並將參數名稱更改為array1。

獲取一個像netbeans或eclipse這樣的IDE。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM